Pagini recente » Cod sursa (job #1332032) | Cod sursa (job #1414922) | Cod sursa (job #983959) | Cod sursa (job #560821) | Cod sursa (job #601060)
Cod sursa(job #601060)
type matrice=array[1..16,1..16] of longint;
var a:matrice; x,lim:char; y,max,N,M:int64; F,G:text; i,j,lim2:byte;
procedure CautaCandidat;
var max,neg,pos:int64; i,j:byte; k:char;
begin
max:=0;
for j:=1 to M do begin
neg:=0; pos:=0; k:='c';
for i:=1 to N do
if a[i,j]<0 then neg:=neg+a[i,j]
else pos:=pos+a[i,j];
if (abs(neg)-abs(pos)>max) and ((lim<>k) or (j<>lim2)) then
begin
x:='c';
y:=j;
max:=abs(neg)-abs(pos);
end;
end;
k:='l';
for i:=1 to N do begin
neg:=0; pos:=0;
for j:=1 to M do
if a[i,j]<0 then neg:=neg+a[i,j]
else pos:=pos+a[i,j];
if (abs(neg)-abs(pos)>max) and ((lim<>k) or (j<>lim2)) then
begin
x:='l';
y:=i;
max:=abs(neg)-abs(pos);
end;
end;
end;
procedure Flip(x:char; y:integer);
var i,j:byte;
begin
if x='l' then
for j:=1 to M do
a[y,j]:=a[y,j]*-1;
if x='c' then
for i:=1 to N do
a[i,y]:=a[i,y]*-1;
end;
function Suma(a:matrice):int64;
var i,j:integer; S:int64;
begin
S:=0;
for i:=1 to N do
for j:=1 to M do
S:=S+a[i,j];
Suma:=S;
end;
Begin
Assign(F, 'flip.in');
reset(F);
readln(F, N,M);
for i:=1 to N do
begin
for j:=1 to M do
read(F, a[i,j]);
readln(F);
end;
close(F);
for i:=1 to N*M do begin
CautaCandidat;
Flip(x,y);
if Suma(a)<max then begin
Flip(x,y);
lim:=x;
lim2:=y;
end else max:=suma(a);
end;
assign(G, 'flip.out');
rewrite(G);
write(G, max);
writeln(max);
close(G);
readln;
end.