VBOARD - Bàn cờ
Tác giả: ladpro98
Ngôn ngữ: Pascal
program vboard;
uses math;
const fi='';
maxN = 505;
var fw,fb,a:array[0..maxN,0..maxN] of longint;
n,q,i,x,y,u,v:longint;
inp:text;
procedure input;
var i,j:longint;
begin
assign(inp,fi);
reset(inp);
readln(inp,n);
for i:=1 to n do
begin
for j:=1 to n do
read(inp,a[i,j]);
readln(inp);
end;
readln(inp,q);
end;
function isWhite(i,j:longint):boolean;
begin
if (odd(i) and odd(j))
or (not odd(i)) and (not odd(j))
then exit(true);
exit(false);
end;
procedure init;
var i,j:longint;
begin
for i:=1 to n do
for j:=1 to n do
begin
fw[i,j]:=fw[i-1,j]+fw[i,j-1]-fw[i-1,j-1];
fb[i,j]:=fb[i-1,j]+fb[i,j-1]-fb[i-1,j-1];
if isWhite(i,j) then
inc(fw[i,j],a[i,j])
else
inc(fb[i,j],a[i,j]);
end;
end;
function query(i,j,m,n:longint):longint;
var res,w,b:longint;
begin
w:=fw[m,n]+fw[i-1,j-1]-fw[i-1,n]-fw[m,j-1];
b:=fb[m,n]+fb[i-1,j-1]-fb[i-1,n]-fb[m,j-1];
exit(abs(w-b));
end;
begin
input;
init;
for i:=1 to q do
begin
readln(inp,x,y,u,v);
writeln(query(x,y,u,v));
end;
close(inp);
end.