Counting Black
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other)
Total Submission(s) : 7 Accepted Submission(s) : 5
Problem Description
There is a board with 100 * 100 grids as shown below. The left-top gird is denoted as (1, 1) and the right-bottom grid is (100, 100).
We may apply three commands to the board:
In the beginning, all the grids on the board are white. We apply a series of commands to the board. Your task is to write a program to give the numbers of black grids within a required region when a TEST command is applied.
![](https://i-blog.csdnimg.cn/blog_migrate/5e2352d82eac5e226625773fae95cd7f.jpeg)
We may apply three commands to the board:
1. WHITE x, y, L // Paint a white square on the board, // the square is defined by left-top grid (x, y) // and right-bottom grid (x+L-1, y+L-1) 2. BLACK x, y, L // Paint a black square on the board, // the square is defined by left-top grid (x, y) // and right-bottom grid (x+L-1, y+L-1) 3. TEST x, y, L // Ask for the number of black grids // in the square (x, y)- (x+L-1, y+L-1)
In the beginning, all the grids on the board are white. We apply a series of commands to the board. Your task is to write a program to give the numbers of black grids within a required region when a TEST command is applied.
Input
The first line of the input is an integer t (1 <= t <= 100), representing the number of commands. In each of the following lines, there is a command. Assume all the commands are legal which means that they won't try to paint/test the grids outside the board.
Output
For each TEST command, print a line with the number of black grids in the required region.
Sample Input
5 BLACK 1 1 2 BLACK 2 2 2 TEST 1 1 3 WHITE 2 1 1 TEST 1 1 3
Sample Output
7 6
Source
PKU
代码:
#include<stdio.h>
#include<string.h>
int main()
{ int x,y,l;
int a[100][100],sum,i,j;
char str[7];
for(i=0;i<100;i++)
{ for(j=0;j<100;j++)
{ a[i][j]=0; }
}
int N;sum=0;
scanf("%d",&N);
while(N--)
{ scanf("%s%d%d%d",&str,&x,&y,&l);
if(strcmp("TEST",str)==0)
{ sum=0;
for(i=x-1;i<=x+l-2;i++)
{ for(j=y-1;j<=y+l-2;j++)
if(a[i][j]==1) sum++;
}
printf("%d\n",sum);
}
else if(strcmp("BLACK",str)==0)
{
for(i=x-1;i<=x+l-2;i++)
{ for(j=y-1;j<=y+l-2;j++)
a[i][j]=1 ;
}
}
else if(strcmp(str,"WHITE")==0)
{
for(i=x-1;i<=x+l-2;i++)
{ for(j=y-1;j<=y+l-2;j++)
a[i][j]=0 ;
}
}
}
return 0;
}
#include<string.h>
int main()
{ int x,y,l;
int a[100][100],sum,i,j;
char str[7];
for(i=0;i<100;i++)
{ for(j=0;j<100;j++)
{ a[i][j]=0; }
}
int N;sum=0;
scanf("%d",&N);
while(N--)
{ scanf("%s%d%d%d",&str,&x,&y,&l);
if(strcmp("TEST",str)==0)
{ sum=0;
for(i=x-1;i<=x+l-2;i++)
{ for(j=y-1;j<=y+l-2;j++)
if(a[i][j]==1) sum++;
}
printf("%d\n",sum);
}
else if(strcmp("BLACK",str)==0)
{
for(i=x-1;i<=x+l-2;i++)
{ for(j=y-1;j<=y+l-2;j++)
a[i][j]=1 ;
}
}
else if(strcmp(str,"WHITE")==0)
{
for(i=x-1;i<=x+l-2;i++)
{ for(j=y-1;j<=y+l-2;j++)
a[i][j]=0 ;
}
}
}
return 0;
}