poj 1656 Counting Black

来源:互联网 发布:ubuntu 安装 交换分区 编辑:程序博客网 时间:2024/04/25 12:33

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:
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.
http://poj.org/problem?id=1656
 
代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>int region[101][101] = {0};void paint(int x, int y, int l, int color){for(int i = x; i <= x + l - 1; i++)for(int j = y; j <= y + l - 1; j++)region[i][j] = color;}int getNum(int x, int y , int l){int num = 0;for(int i = x; i <= x + l - 1; i++)for(int j = y; j <= y + l - 1; j++)if(region[i][j] == 1)num++;return num;}int main(){int t,x,y,l;char com[6];scanf("%d",&t);while(t--){scanf("%s %d %d %d",com,&x,&y,&l);if(strcmp(com,"BLACK") == 0){paint(x,y,l,1);}else if(strcmp(com,"WHITE") == 0){paint(x,y,l,0);}else if(strcmp(com,"TEST") == 0){printf("%d\n",getNum(x,y,l));}}}

0 0