Pagini recente » Cod sursa (job #133225) | Cod sursa (job #1441633) | Cod sursa (job #2217077) | Cod sursa (job #1649031) | Cod sursa (job #554355)
Cod sursa(job #554355)
program flip;
type matrice=array[1..16,1..16] of longint;
var t:matrice;
m,n:byte;
smax:longint;
procedure citire;
var f:text;
i,j:byte;
begin
assign(f,'flip.in');
reset(f);
readln(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,t[i,j]);
close(f)
end;
procedure afisare;
var f:text;
begin
assign(f,'flip.out');
rewrite(f);
write(f,smax);
close(f)
end;
procedure fliplinie(i:byte);
var j:byte;
begin
for j:=1 to m do
t[i,j]:=-t[i,j]
end;
procedure flipcoloana(j:byte);
var i:byte;
begin
for i:=1 to n do
t[i,j]:=-t[i,j]
end;
function suma:longint;
var i,j:byte;
s:longint;
begin
s:=0;
for i:=1 to n do
for j:=1 to m do
s:=s+t[i,j];
suma:=s
end;
function suma_col(j:byte):longint;
var i:byte;
s:longint;
begin
s:=0;
for i:=1 to n do
s:=s+t[i,j];
suma_col:=s
end;
procedure back(i:byte);
var j,k:byte;
s_col,s:longint;
begin
if i<=n then
begin
fliplinie(i);
back(i+1);
fliplinie(i);
back(i+1)
end
else
begin
s:=0;
for j:=1 to m do
begin
s_col:=suma_col(j);
if s_col<0 then
begin
flipcoloana(j);
s_col:=-s_col
end;
s:=s+s_col
end;
if s>smax then
smax:=s
end
end;
begin
citire;
smax:=0;
back(1);
afisare
end.