Cod sursa(job #89880)

Utilizator savimSerban Andrei Stan savim Data 7 octombrie 2007 19:37:37
Problema Jocul Flip Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.61 kb
var a,c:array[1..16,1..16] of int64;
    back:array[1..16] of integer;
    s1,s2,n,max,m,gas,p:int64;
    i,j: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;
     for i:=1 to n do
         back[i]:=0;
     back[n]:=-1;
     repeat
           back[n]:=back[n]+1;
           p:=n;
           while back[p]>1 do
           begin
                back[p]:=0;
                back[p-1]:=back[p-1]+1;
                p:=p-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;

           gas:=0;
           for i:=1 to n do
               if back[i]=0 then begin gas:=1;break;end;
     until gas=0;
     writeln(f2,max);
     close(f1);
     close(f2);
end.