Pagini recente » Cod sursa (job #2266102) | Cod sursa (job #1516407) | Cod sursa (job #68132) | Cod sursa (job #1516598) | Cod sursa (job #23301)
Cod sursa(job #23301)
Program flip;
type dom=-1000000..1000000;
info=record
linie:byte;
dif:dom;end;
var inf,inf2:info;
tabla:array[1..16,1..16] of dom;
x,y,z,w:dom;
i,j,n,m:byte;
suma:longint;
f,g:text;
Begin
assign(f,'flip.in');assign(g,'flip.out');
reset(f);rewrite(g);
read(f,n,m);suma:=0;
for i:=1 to m do
for j:=1 to n do
read(f,tabla[j,i]);
if n<m then begin
inf.dif:=1;inf.linie:=1;inf2.dif:=1;inf2.linie:=1;
while (inf.linie<>0) or (inf2.linie<>0) do begin
inf.dif:=0;inf.linie:=0;inf2.dif:=0;inf2.linie:=0;
For i:=1 to n do begin
x:=0;y:=0;
for j:=1 to m do begin
if tabla[i,j]>0 then x:=x+tabla[i,j]
else y:=y+(-tabla[i,j]);end;
if (y>x) and ((y-x)>inf.dif) then begin
inf.linie:=i;inf.dif:=y-x;end;
End;
For i:=1 to m do begin
z:=0;w:=0;
for j:=1 to n do begin
if tabla[j,i]>0 then z:=z+tabla[j,i]
else w:=w+(-tabla[j,i]);end;
if (w>z) and ((w-z)>inf2.dif) then begin
inf2.linie:=i;inf2.dif:=w-z;end;
End;
if inf.dif>inf2.dif then for j:=1 to m do
tabla[inf.linie,j]:=-tabla[inf.linie,j]
else for j:=1 to n do
tabla[j,inf2.linie]:=-tabla[j,inf2.linie];
end;END
else begin
inf.dif:=1;inf.linie:=1;inf2.dif:=1;inf2.linie:=1;
while (inf.linie<>0) or (inf2.linie<>0) do begin
inf.dif:=0;inf.linie:=0;inf2.dif:=0;inf2.linie:=0;
For i:=1 to m do begin
z:=0;w:=0;
for j:=1 to n do begin
if tabla[j,i]>0 then z:=z+tabla[j,i]
else w:=w+(-tabla[j,i]);end;
if (w>z) and ((w-z)>inf2.dif) then begin
inf2.linie:=i;inf2.dif:=w-z;end;
End;
For i:=1 to n do begin
x:=0;y:=0;
for j:=1 to m do begin
if tabla[i,j]>0 then x:=x+tabla[i,j]
else y:=y+(-tabla[i,j]);end;
if (y>x) and ((y-x)>inf.dif) then begin
inf.linie:=i;inf.dif:=y-x;end;
End;
if inf2.dif>inf.dif then for j:=1 to n do
tabla[j,inf2.linie]:=-tabla[j,inf2.linie]
else for j:=1 to m do
tabla[inf.linie,j]:=-tabla[inf.linie,j];
end;END;
for i:=1 to n do
for j:=1 to m do
suma:=suma+tabla[i,j];
Write(g,suma);
Close(f);close(g);
End;