Pagini recente » Borderou de evaluare (job #3306366) | Cod sursa (job #2170747) | Cod sursa (job #1659907)
type matrice=array [1..16,1..16]of longint;
tablou=array [0..17]of integer;
var t:matrice;
a,b:tablou;
k,m,n,p,l,s,sum:int64;
f,g:text;
i,j,x,y:word;
begin
assign(f,'flip.in');
assign(g,'flip.out');
reset(f);
rewrite(g);
read(f,n,m);
for i:=1 to n do
for j:=1 to m do
read(f,t[i,j]);
for i:=1 to n do
a[i]:=1;
for i:=1 to m do
b[i]:=1;
p:=1;
for i:=1 to n do
p:=p*2;
l:=1;
for i:=1 to m do
l:=l*2;
i:=1;
while i<=p do
begin
j:=1;
while j<=l do
begin
k:=0;
for x :=1 to n do
for y:=1 to m do
k:=k+t[x,y]*a[x]*b[y];
if k>sum then sum:=k;
s:=m;
if b[m]=1 then b[m]:=-1
else b[m]:=0;
repeat
if b[s]=0 then begin
b[s]:=1;
if s-1>0 then begin
if (b[s-1]=1) then b[s-1]:=-1
else b[s-1]:=0;
end;
end;
if s-1>0then s:=s-1;
until b[s]<>0;
j:=j+1;
end;
s:=n;
if a[n]=1 then a[n]:=-1
else a[n]:=0;
repeat
if a[s]=0 then begin
a[s]:=1;
if s-1>0 then begin if (a[s-1]=1) then a[s-1]:=-1
else a[s-1]:=0;
end;
end;
if s-1>0 then s:=s-1;
until a[s]<>0;
i:=i+1;
end;
write(g,sum);
close(f);
close(g);
end.