Pagini recente » Cod sursa (job #417301) | Cod sursa (job #1642961) | Cod sursa (job #733788) | Cod sursa (job #1224293) | Cod sursa (job #74603)
Cod sursa(job #74603)
var i,j,n,m,z:integer; s,smax,min,min2:longint;
a:array[1..17,1..17]of longint;
col,lin:array[1..17]of longint;
procedure citire;
begin
assign(input,'flip.in');
reset(input);
readln(n,m);
smax:=0;
for i:=1 to n do begin
for j:=1 to m do begin
read(a[i,j]);
inc(col[j],a[i,j]);
inc(lin[i],a[i,j]);
inc(smax,a[i,j]);
end;
readln;
end;
close(input);
end;
procedure minlin;
begin
for i:=1 to n do
if lin[i]<0 then begin
inc(z);
inc(min,lin[i]);
end;
end;
procedure mincol;
begin
for i:=1 to m do
if col[i]<0 then begin
inc(z);
inc(min2,col[i]);
end;
end;
procedure rezolvare;
begin
z:=0;
min:=0; min2:=0;
minlin;
mincol;
s:=smax;
while z<>0 do begin
if min2<min then begin
for j:=1 to m do
if col[j]<0 then begin
col[j]:=-col[j];
s:=s+2*col[j];
for i:=1 to n do begin
a[i,j]:=-a[i,j];
inc(lin[i],2*a[i,j]);
end;
end;
min:=0; min2:=0;
z:=0;
minlin;
end
else begin
for i:=1 to n do
if lin[i]<0 then begin
lin[i]:=-lin[i];
s:=s+2*lin[i];
for j:=1 to m do begin
a[i,j]:=-a[i,j];
inc(col[j],2*a[i,j]);
end;
end;
min:=0; min2:=0;
z:=0;
mincol;
end;
if s>smax then smax:=s;
end;
end;
procedure afisare;
begin
assign(output,'flip.out');
rewrite(output);
writeln(smax);
close(output);
end;
begin;
citire;
rezolvare;
afisare;
end.