Cod sursa(job #90071)

Utilizator savimSerban Andrei Stan savim Data 8 octombrie 2007 16:36:45
Problema Jocul Flip Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.55 kb
var a,c:array[1..16,1..16] of int64;
    back:array[1..16] of integer;
    s1,s2,n,f,co,max,m,gas,poz,p:int64;
    i,j,t:longint;
    f1,f2:text;
begin
     assign(f1,'flip.in');
     assign(f2,'flip.out');
     reset(f1);
     rewrite(f2);
     read(f1,n,m);
     max:=0;
     for i:=1 to n do
         for j:=1 to m do
         begin
             read(f1,a[i][j]);
             max:=max+a[i][j];
         end;
     f:=1;
     for i:=1 to n do
        f:=f*2;
     f:=f-1;
     for i:=1 to n do
        back[i]:=0;
     for t:=1 to f do
     begin
           co:=t;poz:=1;
           while co>0 do
           begin
                back[poz]:=co mod 2;
                co:=co div 2;
                poz:=poz+1;
           end;
           for i:=1 to n do
               for j:=1 to m do
                   c[i][j]:=a[i][j];
           for i:=1 to n do
               if back[i]=1 then for j:=1 to m do
                                     c[i][j]:=c[i][j]*(-1);
           for j:=1 to m do
           begin
                s1:=0;s2:=0;
                for i:=1 to n do
                begin
                    s1:=s1+c[i][j];
                    s2:=s2+c[i][j]*(-1);
                end;
                if s2>s1 then for i:=1 to n do
                                  c[i][j]:=c[i][j]*(-1);
           end;
           s1:=0;
           for i:=1 to n do
               for j:=1 to m do
                   s1:=s1+c[i][j];
           if s1>max then max:=s1;

     end;
     writeln(f2,max);
     close(f1);
     close(f2);
end.