Pagini recente » Cod sursa (job #663520) | Cod sursa (job #2199955) | Cod sursa (job #732915) | Cod sursa (job #581966) | Cod sursa (job #1580606)
program infoarena_flip;
type stiva=array[1..100]of -1..1;
var ams,ev:boolean;
m,n,k,max:longint;
st:stiva;
a:array[1..16,1..16] of longint;
f:text;
procedure citire;
var i,j:longint;
begin
assign(f,'flip.in');reset(f);
read(f,n,m);
for i:=1 to n do
begin
readln(f);
for j:=1 to m do
read(f,a[i,j]);
end;
close(f);
end;
procedure tipar;
var i,j,s,si:longint;
b:array[1..16,1..16]of longint;
c:array[1..16] of longint;
begin {
for i:=1 to n do
for j:=1 to m do
b[i,j]:=a[i,j];
for i:=1 to n do
if st[i]=1 then for j:=1 to m do b[i,j]:=-b[i,j];
for i:=n+1 to n+m do
if st[i]=1 then for j:=1 to n do b[j,i-n]:=-b[j,i-n];
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+b[i,j];
if s>max then max:=s; }
for i:=1 to n do
for j:=1 to m do
b[i,j]:=a[i,j];
for i:=1 to n do
if st[i]=1 then for j:=1 to m do b[i,j]:=-b[i,j];
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+b[i,j];
if s>max then max:=s;
for i:=1 to m do c[i]:=0;
for i:=1 to n do
for j:=1 to m do
c[j]:= c[j]+b[i,j]; si:=s;
for i:=1 to m do
if c[i]<0 then begin
si:=si-2*c[i];
end;
if si>max then max:=si;
end;
begin
citire;
max:=0;
k:=1;st[k]:=-1;
while (k>0) do
begin
repeat
ams:=(st[k]<1);
if ams then st[k]:=st[k]+1;
ev:=true;
until (not ams)or(ams and ev);
if ams then if (k=(n)) then tipar
else begin k:=k+1;st[k]:=-1;end
else k:=k-1;
end;
assign(f,'flip.out');rewrite(f);write(f,max);close(f);
end.