Cod sursa(job #270969)
var f,g:Text;
n,m,x,max,maxl,z,nr,i,j:longint;
s:real;
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;
for i:=1 to m do
for j:=1 to n do
c[i]:=c[i]+a[j,i];
for i:=1 to n do
for j:=1 to m do
l[i]:=l[i]+a[i,j];
while ok do
begin
for i:=1 to m do
begin
for j:=1 to n do
if (max>c[i])and(c[i]<0)then begin
max:=c[i];
x:=i;
end;
end;
for i:=1 to n do
begin
for j:=1 to m do
if (maxl>l[i])and(l[i]<0)then begin
maxl:=l[i];
z:=i;
end;
end;
c[x]:=c[x]*(-1);
l[z]:=l[z]*(-1);
for i:=1 to n do
a[i,x]:=a[i,x]*(-1);
for i:=1 to m do
a[z,i]:=a[z,i]*(-1);
testare;
end;
for i:=1 to n do
for j:=1 to m do
s:=s+a[i,j];
writeln(g,s:0:0);
close(g);
end.