Moderator: Board moderators

rubendv
New poster
Posts: 9
Joined: Mon Mar 15, 2004 10:23 pm
Thanks Larry.

Although I corrected my program, I still got WA.
Tell me another thing:

If I am on a particular game instance "i", and I reach BINGO in less than the 75 numbers, the other numbers that didn't came out count in the next game instance "i + 1"?

Abednego
A great helper
Posts: 281
Joined: Tue Sep 10, 2002 5:14 am
Location: Mountain View, CA, USA
Contact:
No, they don't. Each game is independent.
If only I had as much free time as I did in college...

Larry
Guru
Posts: 647
Joined: Wed Jun 26, 2002 10:12 pm
Location: Hong Kong and New York City
Contact:
Remeber to read in all 75 numbers, regardless of if you won or not.

watershed
New poster
Posts: 13
Joined: Thu Aug 05, 2004 9:14 am

### 10813-WA

Code: Select all

``````#include<stdio.h>
int grid[5][5]={0};  // BINGO card
bool mark[5][5];
int call[75];
void clear()
{
int i, j;
for(i=0; i<5; ++i)
for(j=0; j<5; ++j)
mark[i][j] = false;
mark[2][2] = true;  // free space
}
void input()
{
int i, j;
for(i=0; i<2; ++i)
for(j=0; j<5; ++j)
scanf("%d",&grid[i][j]);
scanf("%d%d%d%d",&grid[2][0],&grid[2][1],&grid[2][3],&grid[2][4]);
for(i=3; i<5; ++i)
for(j=0; j<5; ++j)
scanf("%d",&grid[i][j]);
for(i=0; i<75; ++i)
scanf("%d",&call[i]);
}
int bingo(int y, int x)
{
int i, j, verify = 0;
for(i=0; i<5; ++i)		// Vertical
if( mark[i][x] == true ) ++verify;
if( verify == 5 ) return 1;

verify = 0;
for(j=0; j<5; ++j)		// Horizontal
if( mark[y][j] == true ) ++verify;
if( verify == 5 ) return 1;

if( x == y ) {          // Diagonal 1
verify = 0;
for(i=0, j=0; i<5; ++i, ++j)
if( mark[i][j] == true ) ++verify;
if( verify == 5 ) return 1;
}
// Diagonal 2
if((x==4 && y==0) || (x==3 && y==1) || (x==1 && y==3) || (x==0 && y==4)) {
verify = 0;
for(i=4, j=0; j<5; --i, ++j)
if( mark[i][j] == true ) ++verify;
if( verify == 5 ) return 1;
}
return 0;
}
int compute()
{
int i, j, k;
for(k=0; k<75; ++k) {
for(i=0; i<5; ++i)
for(j=0; j<5; ++j)
if( grid[i][j] == call[k] ) { // find bingo number, mark it
mark[i][j] = true;
if( bingo(i,j) ) return call[k];
}
}
}
main()
{
int n;
scanf("%d",&n);
for(; n>0; --n) {
clear();
input();
printf("BINGO after %d numbers announced\n",compute());
}
}``````

Martin Macko
A great helper
Posts: 481
Joined: Sun Jun 19, 2005 1:18 am
Location: European Union (Slovak Republic)

### Re: 10813-WA

watershed wrote:

Code: Select all

``````int compute()
{
...
if( bingo(i,j) ) return call[k];
...
}
``````
You shouldn't write the last announced number, but it's order.

Soarer
New poster
Posts: 14
Joined: Wed Nov 09, 2005 8:17 pm
can anyone give me some more io? thanks.

tan_Yui
Experienced poster
Posts: 155
Joined: Sat Jul 10, 2004 12:41 am
Soarer wrote:can anyone give me some more io? thanks.
I also think htl's input set is incorrect just like sumankar's comment.
My AC code outputs different result from ibrahim's one.

And following is other i/o.
Input :

Code: Select all

``````5
1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
75 74 73 72 71 70 69 68 67 66
60 59 58 57 56 55 54 53 52 51
45 44 43 42 41 40 39 38 37 36
30 29 28 27 26 25 24 23 22 21
15 14 13 12 11 10  9  8  7  6
1 17 31 47 61 63 49 65 35 19
5  3 16 46  2 32 62 18 48  4
34 64 20 50 33
1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
75 74 73 72 71 70 69 68 67 66
60 59 58 57 56 55 54 53 52 51
45 44 43 42 41 40 39 38 37 36
30 29 28 27 26 25 24 23 22 21
15 14 13 12 11 10  9  8  7  6
61 46 31 16  2 17 32 47 63 48
3  4 34 49 65 20  5 19 64 35
50 18 63  1 33
1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
75 74 73 72 71 70 69 68 67 66
60 59 58 57 56 55 54 53 52 51
45 44 43 42 41 40 39 38 37 36
30 29 28 27 26 25 24 23 22 21
15 14 13 12 11 10  9  8  7  6
61 46 31 16  2 17 32 47 63 48
3  4 34 49 65 20  5 35 64 19
50 18 63  1 33
1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
75 74 73 72 71 70 69 68 67 66
60 59 58 57 56 55 54 53 52 51
45 44 43 42 41 40 39 38 37 36
30 29 28 27 26 25 24 23 22 21
15 14 13 12 11 10  9  8  7  6
61 46 31 16  2 17 32 47 63 48
3  4 34 49 65 20  5  1 64 19
50 18 63 35 33
1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
75 74 73 72 71 70 69 68 67 66
60 59 58 57 56 55 54 53 52 51
45 44 43 42 41 40 39 38 37 36
30 29 28 27 26 25 24 23 22 21
15 14 13 12 11 10  9  8  7  6
61 46 31 16  2 17 32 47 63 48
3  4 34 49 65 20  5 33 18 19
50 64 63 35  1
``````
Output :

Code: Select all

``````BINGO after 58 numbers announced
BINGO after 68 numbers announced
BINGO after 68 numbers announced
BINGO after 68 numbers announced
BINGO after 69 numbers announced
``````
Best regards.

rafagiu
New poster
Posts: 12
Joined: Sat Sep 24, 2005 8:30 pm
Hello everyone,

I have two more test cases for the friends in need.

Since I wasn't able to get AC until my program could solve these both test cases, I think they might be useful. They include some extreme values which your program should be ready to deal with.

Enjoy!

Input:

Code: Select all

``````2

1 16 31 46 61
2 20 32 47 66
11 17    55 71
4 18 36 56 72
10 19 40 50 65
1  2  3 61 16  6  7  8  9 10
11 12 13 14  5 31 17 18 19 46
21 22 23 24 25 26 20 28 29 30
15 32 33 34 35 36 37 38 39 40
41 42 43 44 45 27 47 48 49 50
51 52 53 54 55 56 57 58 59 60
4 62 63 64 65 66 67 68 69 70
71 72 73 74 75

1 20 31 47 61
2 21 32 46 62
3 17    48 63
4 16 33 49 64
15 19 34 50 65
1  2  3 75  5  6  7  8  9 10
11 12 13 14 15 16 74 18 19 20
21 22 23 24 25 26 27 28 29 30
71 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 73 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
31 72 49 17  4``````
Output:

Code: Select all

``````BINGO after 20 numbers announced
BINGO after 61 numbers announced``````
[/code]

xintactox
New poster
Posts: 14
Joined: Thu Dec 01, 2005 3:17 pm
Location: Brazil

### Thanks tan_Yui!

Your sample input/output helped me a lot!

Thank you!

Shahidul.CSE
Experienced poster
Posts: 148
Joined: Sun Jul 13, 2014 4:32 am

### Re: 10813 - Traditional BINGO

I am in doubt for some matter in this problem, such as-
• 1)I didn't understand this,
A player may mark the centre FREE SPACE at any time.
2)For center free space, 2 diagonals, C3 and R3 contain only four numbers. So how can be match 5 times? and why should I check for these four case?
3)I only checked for r1,r2,r4,r5,c1,c2,c4,c5 , but having WA.
Hereis my code:

Code: Select all

``````Code removed after being Accepted !
``````
Last edited by Shahidul.CSE on Wed Jul 23, 2014 7:24 am, edited 1 time in total.
Md. Shahidul Islam
Dept. of CSE at Begum Rokeya University, Rangpur, Bangladesh
UVa id: http://uhunt.felix-halim.net/id/438420
Email me: shahidul.cse.brur@gmail.com

lbv
Experienced poster
Posts: 128
Joined: Tue Nov 29, 2011 8:40 am

### Re: 10813 - Traditional BINGO

Shahidul.CSE wrote:I am in doubt for some matter in this problem, such as-
• 1)I didn't understand this,
A player may mark the centre FREE SPACE at any time.
It means exactly what those words typically mean. That is, a player can mark the centre space at any point in time (before the first turn, after the first turn, after the second, etc.) At any time. See the test cases below.

Shahidul.CSE wrote:
• 2)For center free space, 2 diagonals, C3 and R3 contain only four numbers. So how can be match 5 times? and why should I check for these four case?
The center space is a sort of "wildcard". It is as any other space, in the sense that you can mark it, and a game is won when you mark 5 in any row, column or diagonal, but what makes the center space special is the rule explained in the previous point.

You should check for C3, and R3 and the two main diagonals because each of these form valid bingos when their 5 spaces are marked.

Shahidul.CSE wrote:
• 3)I only checked for r1,r2,r4,r5,c1,c2,c4,c5 , but having WA.
I'm not sure if I understand your approach, but notice that merely ignoring the center space is not enough. Each BINGO has to be from 5 spaces from the same row, column or diagonal.

Try the test cases posted in previous messages. Here's a couple more:

Input

Code: Select all

``````2

1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
3 18 48 63 61 31 46 16  2 32
47 62  1 17 49 65  4 19 34 64
5 20 35 50  6  7  8  9 10 11
12 13 14 15 21 22 23 24 25 26
27 28 29 30 33 36 37 38 39 40
41 42 43 44 45 51 52 53 54 55
56 57 58 59 60 66 67 68 69 70
71 72 73 74 75

1 16 31 46 61
2 17 32 47 62
3 18    48 63
4 19 34 49 64
5 20 35 50 65
3 18 48 61 63 31 46 16  2 32
47 62  1 17 49 65  4 19 34 64
5 20 35 50  6  7  8  9 10 11
12 13 14 15 21 22 23 24 25 26
27 28 29 30 33 36 37 38 39 40
41 42 43 44 45 51 52 53 54 55
56 57 58 59 60 66 67 68 69 70
71 72 73 74 75
``````
Output

Code: Select all

``````BINGO after 4 numbers announced
BINGO after 5 numbers announced
``````
Last edited by lbv on Wed Jul 23, 2014 7:56 am, edited 1 time in total.

Shahidul.CSE
Experienced poster
Posts: 148
Joined: Sun Jul 13, 2014 4:32 am

### Re: 10813 - Traditional BINGO

Now I have changed my code as bellow:

Code: Select all

``````    Code removed after being Accepted !

``````
Last edited by Shahidul.CSE on Wed Jul 23, 2014 7:22 am, edited 1 time in total.
Md. Shahidul Islam
Dept. of CSE at Begum Rokeya University, Rangpur, Bangladesh
UVa id: http://uhunt.felix-halim.net/id/438420
Email me: shahidul.cse.brur@gmail.com

lbv
Experienced poster
Posts: 128
Joined: Tue Nov 29, 2011 8:40 am

### Re: 10813 - Traditional BINGO

Shahidul.CSE wrote:Now I have changed my code as bellow: (..)
But my code doesn't work properly.
In this line:

Code: Select all

``````if(r1==5||r2==5||r3==5||r4==5||r5==5||c1==5||c2==5||c3==5||c4==5||c5||d1==5||d2==5)
``````
what happened to the condition for c5?

Shahidul.CSE
Experienced poster
Posts: 148
Joined: Sun Jul 13, 2014 4:32 am