Cod sursa(job #6980)

Utilizator m123pop manu m123 Data 21 ianuarie 2007 11:19:57
Problema Elimin Scor 0
Compilator fpc Status done
Runda preONI 2007, Runda 1, Clasa a 9-a si gimnaziu Marime 2.04 kb
program elimin;
var a:array[1..100,1..100] of integer;
f,g:text;
li,co:array[1..500] of 0..1;
m,n,r,c,i,j,n1,n2,t,l1,c1:integer;
s,smax,s1:longint;
begin
assign(f,'elimin.in');reset(f);
assign(g,'elimin.out');rewrite(g);
readln(f,m,n,r,c);
s:=0;smax:=0;
for i:=1 to m do
for j:=1 to n do
 begin read(f,a[i,j]);s:=s+a[i,j]; end;
for i:=1 to m do li[i]:=0 ;
repeat
    i:=m;
    t:=1;
    while t=1 do begin t:=(li[i]+t) div 2;
                       li[i]:=(li[i]+1) mod 2;
                       i:=i-1;
                 end;
    n1:=0;
    for i:=1 to m do
      if li[i]=1 then n1:=n1+1;
   if n1 =r then begin
                   for j:=1 to n do co[j]:=0 ;
                    repeat
                        j:=n;
                        t:=1;
                       while t=1 do begin t:=(co[j]+t) div 2;
                                 co[j]:=(co[j]+1) mod 2;
                                  j:=j-1;
                                     end;
                       n2:=0;
                       for j:=1 to n do
                      if co[j]=1 then n2:=n2+1;
                      if n2=c then begin
                                   s1:=s;
                                   for i:=1 to m do
                                   if  li[i]=1 then
                                            for j:= 1 to n do
                                               if co[j]=1 then
                                               begin
                                               for l1:=1 to n do
                                               s1:=s1-a[l1,j];
                                               for c1:=1 to n do
                                               s1:=s1-a[i,c1];
                                               s1:=s1+a[i,j];
                                               end;
                                  if s1>smax then smax:=s1;
                                  end;
                     until n2=n;
                     end;
   until n1 =m;
   write(g,smax);
   close(f);close(g);
   end.