Pagini recente » Cod sursa (job #2825796) | Cod sursa (job #2229459) | Cod sursa (job #3265186) | Cod sursa (job #3270805) | Cod sursa (job #68730)
Cod sursa(job #68730)
Program Flip;
var n,m : integer;
T : array[1..16,1..16] of longint;
S : longint;
L,C : array[1..16] of longint;
change : boolean;
procedure Citeste;
var Intrare : text;
i,j : integer;
begin
assign(Intrare,'flip.in');
reset(Intrare);
readln(Intrare,n,m);
for i:=1 to 16 do
begin
L[i]:=0;
C[i]:=0;
end;
S:=0;
for i:=1 to n do
for j:=1 to m do
begin
read(Intrare,T[i,j]);
L[i]:=L[i]+T[i,j];
C[j]:=C[j]+T[i,j];
S:=S+T[i,j];
end;
close(Intrare);
end;
procedure ComutaLin(nr : integer);
var i : integer;
begin
S:=S-2*L[nr];
L[nr]:=-L[nr];
for i:=1 to m do
begin
C[i]:=C[i]-2*T[nr,i];
T[nr,i]:=-T[nr,i];
end;
change:=true;
end;
procedure ComutaCol(nr : integer);
var i : integer;
begin
S:=S-2*C[nr];
C[nr]:=-C[nr];
for i:=1 to n do
begin
L[i]:=L[i]-T[i,nr];
T[i,nr]:=-T[i,nr];
end;
change:=true;
end;
procedure Calculeaza;
var i : integer;
begin
change:=true;
while change do
begin
change:=false;
for i:=1 to n do
if L[i]<0 then ComutaLin(i);
for i:=1 to m do
if C[i]<0 then ComutaCol(i);
end;
end;
procedure Scrie;
var Iesire : text;
begin
assign(Iesire,'flip.out');
rewrite(Iesire);
write(Iesire,S);
close(Iesire);
end;
begin
Citeste;
Calculeaza;
Scrie;
end.