Cod sursa(job #791199)
Utilizator | Data | 23 septembrie 2012 12:54:14 | |
---|---|---|---|
Problema | Jocul Flip | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 3.29 kb |
program flip;
VAR
v:array[1..16,1..16] of longint;
i,j,n,m,k:integer;
f,g:text;
s,s1,s2,s3,s4,dif1,dif2:longint;
Begin
assign(f,'flip.in'); Reset(f);
assign(g,'flip.out'); Rewrite(g);
readln(f,n,m);
for i:=1 to n do begin
for j:=1 to m do
read(f,v[i,j]);
read(f);
end;
for i:=1 to n do
for j:=1 to m do begin
dif1:=0; dif2:=0;
s1:=0; s2:=0;
s3:=0; s4:=0;
for k:=i to n do begin
s1:=s1+v[k,j];
s2:=s2-v[k,j];
end;
for k:=j to m do begin
s3:=s3+v[i,k];
s4:=s4-v[i,k];
end;
if (s2>s1) and (s4<s3) then begin
dif1:=s3+s1;
s3:=s3-v[i,j];
dif2:=s3+s2;
if dif2>dif1 then begin
for k:=i to n do
v[k,j]:=v[k,j]*(-1);
end;
end
else if (s1<s2) and(s3>s4) then begin
dif1:=s1+s3;
s1:=s1-v[i,j];
dif2:=s4+s1;
if dif2>dif1 then begin
for k:=j to m do
v[i,k]:=v[i,k]*(-1);
end;
end else if
(s2>s1) and (s3>s4) then begin
s4:=s4+v[i,j];
dif1:=s2+s4;
s4:=s4-v[i,j];
s2:=s2+v[i,j];
dif2:=s2+s4;
if dif1>dif2 then begin
for k:=i to n do
v[k,j]:=v[k,j]*(-1);
for k:=j to m do
v[i,k]:=v[i,k]*(-1);
end else begin
for k:=j to m do
v[i,k]:=v[i,k]*(-1);
for k:=i to n do
v[k,j]:=v[k,j]*(-1);
end;
end;
end;
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+v[i,j];
write(g,s);
close(g);
end.
end.