Pagini recente » Cod sursa (job #2514924) | Cod sursa (job #1216190) | Cod sursa (job #1425748) | Cod sursa (job #3228530) | Cod sursa (job #1602106)
type vector=array[1..16] of longint;
tabel=array[1..16,1..16] of longint;
var v,q:vector;
maxtab,tab:tabel;
n,m,i,j,maxsum,c:longint;
procedure flipcol;
var sum,i1:longint;
begin
sum:=0;
for j:=1 to c do
begin
for i:=1 to n do
sum:=sum+maxtab[i,j];
if sum<0 then
begin
for i1:=1 to n do
maxtab[i1,j]:=maxtab[i1,j]*(-1);
end;
sum:=0;
end;
maxsum:=0;
for i:=1 to n do
for j:=1 to c do maxsum:=maxsum+maxtab[i,j];
end;
procedure flip(x:tabel);
var i,j,sum:longint;
begin
sum:=0;
for i:=1 to m do
for j:=1 to c do
x[q[i],j]:=x[q[i],j]*(-1);
for i:=1 to n do
for j:=1 to c do
sum:=sum+x[i,j];
if sum>maxsum then
begin
for i:=1 to n do
for j:=1 to c do maxtab[i,j]:=x[i,j];
maxsum:=sum;
end;
flipcol;
end;
procedure back(k:integer);
var i:integer;
begin
flip(tab);
if k<=n then
for i:=k to n do
begin
inc(m);
q[m]:=v[i];
back(i+1);
dec(m);
end;
end;
begin
assign(input,'flip.in'); reset(input);
maxsum:=0;
fillchar(maxtab,sizeof(maxtab),0);
m:=0;
readln(input,n,c);
for i:=1 to n do
for j:=1 to c do read(tab[i,j]);
//for i:=1 to n do
//begin
// for j:=1 to c do write(tab[i,j],' ');
// writeln;
// end;
for i:=1 to n do v[i]:=i;
back(1);
close(input);
assign(output,'flip.out'); rewrite(output);
write(output,maxsum);
close(output);
end.