VBOARD - Bàn cờ

Tác giả: khuc_tuan

Ngôn ngữ: C++

#include <iostream>
#include <sstream>
#include <queue>
#include <map>
#include <set>
#include <algorithm>
#include <vector>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;

#define Rep(i,n) for(int i=0;i<(n);++i)
#define Lap(i,n) for(int i=1;i<=(n);++i)
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Ford(i,a,b) for(int i=(a);i>=(b);--i)
#define Fit(i,v) for(__typeof(v.begin()) i=v.begin();i!=v.end();++i)
#define Fill(a,b) memset((a), (b), sizeof(a))
#define pb push_back
#define MP make_pair
#define pause system("pause");

typedef long long LL;

int a[505][505];
int n;
int den[505][505], tr[505][505];

int main() {
	scanf("%d", &n);
	Lap(i,n) Lap(j,n) scanf("%d", &a[i][j]);
	Lap(i,n) Lap(j,n) {
		den[i][j] = den[i-1][j] + den[i][j-1] - den[i-1][j-1];
		tr[i][j] = tr[i-1][j] + tr[i][j-1] - tr[i-1][j-1];
		if((i+j)%2==0) tr[i][j] += a[i][j];
		else den[i][j] += a[i][j];
	}
	int q;
	scanf("%d", &q);
	Lap(kk,q) {
		int x, y, u, v;
		scanf("%d%d%d%d", &x, &y, &u, &v);
		int trang = tr[u][v] - tr[x-1][v] - tr[u][y-1] + tr[x-1][y-1];
		int _den = den[u][v] - den[x-1][v] - den[u][y-1] + den[x-1][y-1];
		int res = abs(trang-_den);
		printf("%d\n", res);
	}
	//pause	
	return 0;
}

Download