6 int parse_draw(int draw
[])
9 if (fgets(buf
, 1000, stdin
) == NULL
)
13 tok
= strtok(buf
, ",");
15 draw
[i
++] = atoi(tok
);
16 tok
= strtok(NULL
, ",");
21 int parse_boards(int boards
[][5][5])
24 while(getchar() == '\n') {
25 for (int row
= 0; row
<5; row
++) {
26 for (int col
= 0; col
<5; col
++) {
27 char buf
[3] = {getchar(), getchar(), getchar()};
28 boards
[i
][row
][col
] = atoi(buf
);
36 bool board_wins(int board
[5][5])
38 for (int row
= 0; row
<5; row
++) {
39 bool rowwin
= true, colwin
= true;
40 for (int col
= 0; col
<5 && (rowwin
|| colwin
); col
++) {
41 rowwin
&= board
[row
][col
] == -1;
42 colwin
&= board
[col
][row
] == -1;
53 int ndraws
= parse_draw(draws
);
55 int boards
[1000][5][5];
56 int nboards
= parse_boards(boards
);
60 for (draw
= 0; draw
< ndraws
&& winner
== -1; draw
++) {
62 for (int board
= 0; board
< nboards
; board
++)
63 for (int row
= 0; row
<5; row
++)
64 for (int col
= 0; col
<5; col
++)
65 if (boards
[board
][row
][col
] == draws
[draw
])
66 boards
[board
][row
][col
] = -1;
68 for (int board
= 0; board
< nboards
&& winner
== -1; board
++)
69 if (board_wins(boards
[board
]))
73 //Calculate sum of unmarked numbers
75 for (int row
= 0; row
<5; row
++)
76 for (int col
= 0; col
<5; col
++)
77 if (boards
[winner
][row
][col
] != -1)
78 sum
+= boards
[winner
][row
][col
];
80 printf("%d\n", sum
*draws
[draw
-1]);