Cod sursa(job #90052)

Utilizator savimSerban Andrei Stan savim Data 8 octombrie 2007 16:08:01
Problema Jocul Flip Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.57 kb
var a:array[1..16,1..16] of int64;
    back:array[1..16] of integer;
    s1,s2,sum,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;
           sum:=0;
           for i:=1 to n do
               if back[i]=1 then for j:=1 to m do
                                    sum:=sum+a[i][j]*(-1)
               else for j:=1 to m do
                        sum:=sum+a[i][j];
           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]*(-1)
                    else s2:=s2+a[i][j];
                end;
                if s2>s1 then for i:=1 to n do
                                sum:=(sum-a[i][j])+a[i][j]*(-1);
           end;
           if sum>max then max:=s1;

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