Cod sursa(job #132813)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 6 februarie 2008 17:53:38
Problema Teren Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
const nmax=300;
var fi,fo:text;
    teren:array[1..nmax,1..nmax]of byte;
    nr1col:array[0..nmax,0..nmax]of integer;
    T:array[1..nmax]of longint;
    n,m,i,j:integer;
    x,sol,max:longint;
function solve(pozi,pozf:integer):longint;
var i,s,st,max,arie,k:longint;
begin
  for k:=1 to m do
    T[k]:=nr1col[pozf,k]-nr1col[pozi-1,k];
  st:=1;
  s:=0;
  max:=0;
  for i:=1 to m do
    begin
      s:=s+T[i];
      while (st<=i)and(s>x) do
        begin
          s:=s-T[st];
          st:=st+1;
        end;
      if st<=i then
        begin
          arie:=(pozf-pozi+1)*(i-st+1);
          if arie>max then max:=arie;
        end;
    end;
  solve:=max;
end;
begin
  assign(fi,'teren.in'); reset(fi);
  assign(fo,'teren.out'); rewrite(fo);
  read(fi,n,m,x);
  for i:=1 to n do
    for j:=1 to m do
      begin
        read(fi,teren[i,j]);
        nr1col[i,j]:=nr1col[i-1,j]+teren[i,j];
      end;
  max:=0;
  for i:=1 to n do
    for j:=i to n do
      begin
        sol:=solve(i,j);
        if sol>max then max:=sol;
      end;
  writeln(fo,max);
  close(fi);
  close(fo);
end.