VBOARD - Bàn cờ

Tác giả: skyvn97

Ngôn ngữ: C++

#include<stdio.h>
#define MAX   555
int a[MAX][MAX];
int b[MAX][MAX];
int w[MAX][MAX];
int n,q;
int abs(int x) {
	if (x<0) return (-x); else return (x);
}
void init(void) {
	scanf("%d",&n);
	int i,j;
	for (i=0;i<=n;i=i+1) {
			b[i][0]=0;
			b[0][i]=0;
			w[i][0]=0;
			w[0][i]=0;
	}
	for (i=1;i<=n;i=i+1)
		for (j=1;j<=n;j=j+1) {
			scanf("%d",&a[i][j]);
			b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j]*((i+j)%2==1);
			w[i][j]=w[i-1][j]+w[i][j-1]-w[i-1][j-1]+a[i][j]*((i+j)%2==0);
		}	
}
void process(void) {
	int i,sb,sw,x,y,z,t;
	scanf("%d",&q);
	for (i=1;i<=q;i=i+1) {
		scanf("%d",&x);
		scanf("%d",&y);
		scanf("%d",&z);
		scanf("%d",&t);
		sb=b[z][t]-b[x-1][t]-b[z][y-1]+b[x-1][y-1];
		sw=w[z][t]-w[x-1][t]-w[z][y-1]+w[x-1][y-1];
		printf("%d\n",abs(sw-sb));
	}
}
int main(void) {
	init();
	process();
}

Download