Cod sursa(job #17460)

Utilizator coderninuHasna Robert coderninu Data 15 februarie 2007 21:56:37
Problema Elimin Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.2 kb
program eliminare;
var x,y:array[1..100,1..100] of integer;
    ln,col:array[1..100] of integer;
    f,g:text;
    m,n,r,c,m1,n1,r1,c1,i,j,coldel,lndel,z,w:integer;
    total,totaux:longint;

procedure citire;
begin
 assign(f,'elimin.in'); reset(f);
 readln(f,m,n,r,c);
 for i:=1 to m do
  begin
  for j:=1 to n do
   read(f,x[i,j]);
  readln(f);
  end;
 close(f);
 for i:=1 to m do
  for j:=1 to n do
   y[i,j]:=x[i,j];
 m1:=m;
 n1:=n;
 r1:=r;
 c1:=c;
end;

procedure delln(a:integer);
begin
 for i:=a to m-1 do
  for j:=1 to n do
   x[i,j]:=x[i+1,j];
 m:=m-1;
end;

procedure delcol(a:integer);
begin
 for j:=a to n-1 do
  for i:=1 to m do
   x[i,j]:=x[i,j+1];
 n:=n-1;
end;

procedure tot;
begin
 total:=0;
 for i:=1 to m do
  for j:=1 to n do
   total:=total+x[i,j];
end;

function sumaln(a:integer):longint;
var s:longint;
    l:integer;
begin
 s:=0;
 for l:=1 to n do
  s:=s+x[a,l];
 sumaln:=total-s;
end;

function sumacol(a:integer):longint;
var s:longint;
    q:integer;
begin
 s:=0;
 for q:=1 to m do
  s:=s+x[q,a];
 sumacol:=total-s;
end;

procedure coloana;
var max,k:integer;
begin
 for k:=1 to n do
  col[k]:=sumacol(k);
 max:=col[1];
 coldel:=1;
 for k:=2 to n do
  if col[k]>max then
   begin
   max:=col[k];
   coldel:=k;
   end;
end;

procedure linia;
var max,k:integer;
begin
 for k:=1 to m do
  ln[k]:=sumaln(k);
 max:=ln[1];
 lndel:=1;
 for k:=2 to m do
  if ln[k]>max then
   begin
   max:=ln[k];
   lndel:=k;
   end;
end;

procedure afis;
begin
 assign(g,'elimin.out'); rewrite(g);
 if total>totaux then
  write(g,total)
 else
  write(g,totaux);
 close(g);
end;


begin
 citire;
 tot;
 if r<>0 then
  for z:=1 to r do
   begin
   linia;
   delln(lndel);
   tot;
   end;
 tot;
 if c<>0 then
  for z:=1 to c do
   begin
   coloana;
   delcol(coldel);
   tot;
   end;
 tot;
 totaux:=total;
 m:=m1;
 n:=n1;
 r:=r1;
 c:=c1;
 for z:=1 to m do
  for w:=1 to n do
   x[z,w]:=y[z,w];
 if c<>0 then
  for z:=1 to c do
   begin
   coloana;
   delcol(coldel);
   tot;
   end;
 tot;
 if r<>0 then
  for z:=1 to r do
   begin
   linia;
   delln(lndel);
   tot;
   end;
 tot;
 afis;
end.