Cod sursa(job #18871)

Utilizator adalLica Adela adal Data 18 februarie 2007 14:36:00
Problema Plantatie Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.92 kb
program plantatzie;
var b:array[00..501,0..501,0..15] of longint;
    f,g:text;
    i,j,y,z,x,k,m,n,mx,p,rez:longint;
function max(x1,x2,x3,x4:longint):longint;
begin
  if x1>x2 then x2:=x1;
  if x3>x4 then x4:=x3;
  if x2>x4 then max:=x2 else max:=x4;
end;

begin
 assign(f,'plantatie.in'); reset(f);
 assign(g,'plantatie.out'); rewrite(g);
 readln(f,n,m);
 for i:=1 to n do
   for j:=1 to n do begin
     read(f,x);  b[i,j,0]:=x;
   end;
 x:=1; y:=0;
 while x<n do begin inc(y); x:=x*2; end;
 for k:=1 to y do
  for i:=1 to n do
   for j:=1 to n do begin
     x:=1 shl (k-1);
     b[i,j,k]:=max(b[i+x,j,k-1],b[i,j+x,k-1],b[i+x,j+x,k-1],b[i,j,k-1]);
   end;
 for i:=1 to m do begin
   readln(f,x,y,z); mx:=1; p:=0;
   while mx<=z do begin inc(p); mx:=mx*2; end;
   mx:=mx div 2; dec(p);
   rez:=max(b[x,y,p],b[x+z-mx,y,p],b[x,y+z-mx,p],b[x+z-mx,y+z-mx,p]);
   writeln(g,rez);
 end;
 close(f); close(g);
end.