Cod sursa(job #1132324)

Utilizator VandheerManPopescu Alin VandheerMan Data 2 martie 2014 23:11:58
Problema Jocul Flip Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.44 kb
var
f:text;
s,max,l,l1:int64;
i,j,n,m,x:byte;
a:array[1..50,1..50] of int64;
begin
 assign(f,'flip.in');
 reset(f);
 readln(f,n,m);
 max:=0;
 for i:=1 to n do for j:=1 to m do begin read(f,a[i,j]);max:=max+a[i,j];end;
 close(f);
repeat
 s:=0;
 for i:=1 to n do
           begin
           l:=0;
           l1:=0;
           for j:=1 to m do
                         begin
                         l:=l+a[i,j];
                         l1:=l1+(a[i,j]*(-1));
                         end;
           if l1>l then
                     for j:=1 to m do
                               begin
                               l:=0;
                               l1:=0;
                               for x:=1 to n do
                                         begin
                                         l:=a[x,j]+l;
                                         l1:=l1+(a[x,j]*(-1));
                                         end;
                               if l<l1 then for x:=1 to n do a[x,j]:=a[x,j]*(-1);
                               end;
           l:=0;l1:=0;
           for  j:=1 to m do
                      begin
                      l:=l+a[i,j];
                      l1:=l1+(a[i,j]*(-1));
                      end;
           if l<l1 then for j:=1 to m do a[i,j]:=(-a[i,j]);
           end;
 for j:=1 to m do
           begin
           l:=0;
           l1:=0;
           for i:=1 to n do begin
                            l:=a[i,j]+l;
                            l1:=l1+(a[i,j]*(-1));
                            end;
           if l1>l then
                    for i:=1 to n do
                         begin
                         l:=0;
                         l1:=0;
                         for x:=1 to m do
                                  begin
                                  l:=a[i,x]+l;
                                  l1:=l1+(a[i,x]*(-1));
                                  end;
                         if l<l1 then for x:=1 to m do a[i,x]:=a[i,x]*(-1);
                         end;
           l:=0;
           l1:=0;
           for i:=1 to n do begin
                          l:=a[i,j];
                          l1:=l1+(a[i,j]*(-1))
                          end;
           if l<l1 then for i:=1 to n do a[i,j]:=(-a[i,j]);
           end;
 for i:=1 to n do for j:=1 to m do s:=s+a[i,j];
 if s>max then max:=s;
until s<=max;
assign(f,'flip.out');
rewrite(f);
write(f,max);
close(f);
end.