Pagini recente » Cod sursa (job #1469699) | Cod sursa (job #1878325) | Cod sursa (job #707590) | Cod sursa (job #139622) | Cod sursa (job #333870)
Cod sursa(job #333870)
Program flip;
const nmax = 16;
vmax = 1000000;
var f,g:text; a:array[1..nmax,1..nmax]of -vmax..vmax;
col:array[1..nmax]of -10*vmax..10*vmax;
lin:array[1..nmax]of -10*vmax..10*vmax;
m,n:byte;
procedure initiere;
var x,y:byte;
begin
assign (f,'flip.in'); reset (f);
assign (g,'flip.out'); rewrite (g);
readln (f,n,m);
for x:=1 to n do begin
for y:=1 to m do read (f,a[x,y]);
readln (f);
end;
end;
procedure col_lin;
var x,y:byte;
begin
for x:=1 to n do lin[x]:=a[x,1];
for x:=1 to n do
for y:=2 to m do lin[x]:=lin[x]+a[x,y];
for x:=1 to m do col[x]:=a[1,x];
for x:=1 to m do
for y:=2 to n do col[x]:=col[x]+a[y,x];
end;
procedure comutare_linie (x:byte);
var y:byte;
begin
lin[x]:=-lin[x];
for y:=1 to m do a[x,y]:=-a[x,y];
for y:=1 to m do col[y]:=col[y]+2*a[x,y];
end;
procedure comutare_coloana (x:byte);
var y:byte;
begin
col[x]:=-col[x];
for y:=1 to n do a[y,x]:=-a[y,x];
for y:=1 to n do lin[y]:=lin[y]+2*a[y,x];
end;
function sum:longint;
var x:byte; y:longint;
begin
y:=0;
for x:=1 to n do y:=y+lin[x];
sum:=y;
end;
procedure cautare;
var x:byte; z:boolean; w:longint;
begin
z:=true;
while z do begin
z:=false;
for x:=1 to m do begin
w:=sum;
comutare_coloana (x);
if sum>w then begin
z:=true;
comutare_coloana (x);
end;
comutare_coloana (x);
end;
for x:=1 to n do begin
w:=sum;
comutare_linie (x);
if sum>w then begin
z:=true;
comutare_linie (x);
end;
comutare_linie (x);
end;
end;
end;
procedure incheiere;
begin
writeln (g,sum);
close (f); close (g);
end;
begin
initiere;
col_lin;
cautare;
incheiere;
end.