Cod sursa(job #112751)

Utilizator anaidaanaida anaida Data 7 decembrie 2007 11:25:53
Problema Teren Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.16 kb
program teren_ok;
uses crt;
label 1;
var t:array[1..180,1..180] of 0..1;
y:array[1..120,1..120] of integer;
a,b,i,j,k,l,m,n,imax,jmax,kmax,lmax:integer;
x,s,amax:longint;
f:text; ok:boolean;
begin
assign(f,'teren.in');
reset(f);
read(f,n,m,x);
for i:=1 to n do
for j:=1 to m do
read(f,t[i,j]);
close(f);
assign(f,'teren.out');
rewrite(f);
ok:=true;
for i:=1 to n-1 do
for j:=1 to m-1 do
begin
s:=0;
for a:=i to n do
begin
s:=s+t[a,j];
y[a,j]:=s;
end;
s:=0;
for a:=j to m do
begin
s:=s+t[i,a];
y[i,a]:=s;
end;
for k:=i+1 to n do
for l:=j+1 to m do
begin
y[k,l]:=t[k,l]+y[k,l-1]+y[k-1,l]-y[k-1,l-1];
if y[k,l]>x then begin ok:=false; goto 1;end
             else if y[k,l]=x then
              begin
              amax:=(k-i+1)*(l-j+1);
              {imax:=i;jmax:=j;kmax:=k;lmax:=l;  }
              end;
end;
1:
end;
if not ok then
begin
writeln(f,{'Aria maxima=',}amax);
{for i:=imax to kmax do
begin
for j:=jmax to lmax do
write(f,t[i,j],' ');
writeln(f);
end;}
end
else
begin
writeln(f,{'Aria maxima=',}m*n);
{for i:=1 to n do
begin
for j:=1 to m do
write(f,t[i,j],' ');
writeln(f);
end; }
end ;

close(f);
end.