Cod sursa(job #90070)

Utilizator savimSerban Andrei Stan savim Data 8 octombrie 2007 16:33:04
Problema Jocul Flip Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.47 kb
var a:array[1..16,1..16] of int64;
    sl,back:array[1..16] of integer;
    s1,s2,sum,n,f,co,poz,max,m,gas: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
     begin
        sl[i]:=0;
        for j:=1 to m do
         begin
             read(f1,a[i][j]);
             sl[i]:=sl[i]+a[i][j];
             max:=max+a[i][j];
         end;
     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;sum:=0;
           while co>0 do
           begin
                back[poz]:=co mod 2;
                co:=co div 2;
                poz:=poz+1;
           end;
           for i:=1 to n do
                if back[i]=0 then sum:=sum+sl[i]
                else sum:=sum+sl[i]*(-1);
           for j:=1 to m do
           begin
                s1:=0;s2:=0;
                for i:=1 to n do
                begin
                    if back[i]=1 then s1:=s1+(-1)*a[i][j]
                    else s1:=s1+a[i][j];
                    if back[i]=1 then s2:=s2+a[i][j]
                    else s2:=s2+(-1)*a[i][j];
                end;
                if s2>s1 then sum:=sum-s1+s2;
           end;
           if sum>max then max:=sum;
     end;
     writeln(f2,max);
     close(f1);
     close(f2);
end.