VBOARD - Bàn cờ

Tác giả: ll931110

Ngôn ngữ: Pascal

Program VBOARD;
        Const
                input  = '';
                output = '';
        Var
                  a,s: array[0..500,0..500] of longint;
                  n,q: longint;

Procedure optimize;
          Var
                 i,j: longint;
          Begin
                 Fillchar(s, sizeof(s), 0);
                 For i:= 1 to n do
                         For j:= 1 to n do
                                 Begin
                                           s[i,j]:= s[i - 1,j] + s[i,j - 1] - s[i - 1,j - 1];
                                           If odd(i + j) then s[i,j]:= s[i,j] - a[i,j]
                                                         else s[i,j]:= s[i,j] + a[i,j];
                                 End;
          End;

Procedure solve;
          Var
                     fi,fo: text;
                   t,i,j,k: longint;
               i1,i2,j1,j2: longint;
          Begin
                Assign(fi, input);
                        Reset(fi);

                        Readln(fi, n);
                        For i:= 1 to n do
                                For j:= 1 to n do read(fi, a[i,j]);

                         optimize;
                         Assign(fo, output);
                                Rewrite(fo);

                                Readln(fi, q);
                                For k:= 1 to q do
                                        Begin
                                                Readln(fi, i1, j1, i2, j2);
                                                t:= s[i2,j2] - s[i1 - 1,j2] - s[i2,j1 - 1] + s[i1 - 1,j1 - 1];
                                                Writeln(fo, abs(t));
                                        End;
                        Close(fo);
                Close(fi);
          End;

Begin
        solve;
End.

Download