Cod sursa(job #1299889)

Utilizator musashi1Doros Doru-Lucian musashi1 Data 23 decembrie 2014 22:01:47
Problema Teren Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.13 kb
var n,m,aux1,i,j,ssmax,ii,jj,x,p,im,jm,s,lj,u,smax:integer;
f,g:text;
a:array[1..300,1..300]of integer;
r:array[1..300,1..300]of integer;
begin

assign(f,'teren.in'); reset(f);
assign(g,'teren.out'); rewrite(g);

read(f,n);
read(f,m);
read(f,x);
for i:=1 to n do begin
 for j:=1 to m do begin
 read(f,a[i,j]);
 end;
end;
smax:=0;  r[1,1]:=a[1,1];

for i:=1 to n do begin
 for j:=1 to m do begin
 if i=1 then begin
  if j>1 then begin r[i,j]:=a[i,j]+r[i,j-1];  end; end
  else if j=1 then r[i,j]:=a[i,j]+r[i-1,j]
   else r[i,j]:=a[i,j]+r[i-1,j]+r[i,j-1]-r[i-1,j-1];
  end;
 end;

for i:=1 to n do begin
 for j:=1 to m do begin
  for ii:=i to n do begin
   for jj:=j to m do begin
   if (j=1) and (i=1) then break;
   if (j=1) or (i=1) then begin if j=1 then begin lj:=r[ii,jj]-r[i-1,jj] end
        else if i=1 then begin lj:=r[ii,jj]-r[ii,j-1]end; end
        else lj:=r[ii,jj]-r[ii,j-1]-r[i-1,jj]+r[i-1,j-1];
        if lj<=x then s:=(ii-i+1)*(jj-j+1)
        else  break;
        if s>smax then begin im:=i; jm:=j; smax:=s;  end;
   end;
  end;
 end;
end;

write(g,im,jm,smax);

close(f);
close(g);
end.