Cod sursa(job #284929)
var f,g:Text;
suma,i,j,n,m,z,max:longint;
a:array[1..16,1..16]of longint;
ok:boolean;
l,c:array[1..16]of longint;
procedure testare;
var ok1,ok2:boolean;
begin
ok1:=false;
ok2:=false;
for i:=1 to m do
if c[i]<0 then ok1:=true;
for i:=1 to n do
if l[i]<0 then ok2:=true;
if (ok1)or(ok2) then ok:=true
else ok:=false;
end;
begin
assign(f,'flip.in');reset(f);
assign(g,'flip.out');rewrite(g);
readln(F,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j]);
ok:=true;
while ok do
begin
for i:=1 to n do
for j:=1 to m do
l[i]:=l[i]+a[i,j];
max:=0;
for i:=1 to n do
if (l[i]<max)and(l[i]<0) then begin
max:=l[i];
z:=i;
end;
for j:=1 to m do
a[z,j]:=a[z,j]*-1;
max:=0;
for j:=1 to m do
for i:=1 to n do
c[j]:=c[j]+a[i,j];
for i:=1 to m do
if (c[i]<max)and(c[i]<0) then begin
max:=c[i];
z:=i;
end;
for i:=1 to n do
a[i,z]:=a[i,z]*-1;
for i:=1 to n do
for j:=1 to m do
l[i]:=l[i]+a[i,j];
for j:=1 to m do
for i:=1 to n do
c[j]:=c[j]+a[i,j];
testare;
end;
for i:=1 to n do
for j:=1 to m do
suma:=suma+a[i,j];
writeln(g,suma);
close(g);
end.