Cod sursa(job #1132324)
Utilizator | 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.