Pagini recente » Cod sursa (job #2582373) | Cod sursa (job #708411) | Cod sursa (job #360737) | Cod sursa (job #2666307) | Cod sursa (job #135733)
Cod sursa(job #135733)
type matrice=array[1..16,1..16] of longint;
stiva=array[1..16] of integer;
var a,b:matrice;
st:stiva;
as:boolean;
f,g:text;
maxi,maxim,suma:longint;
n,m,i,j,k:byte;
procedure succesor(var st:stiva;k:integer;var as:boolean);
begin
if st[k]<1 then begin
inc(st[k]);
as:=true;
end
else as:=false;
end;
procedure verif;
var s:longint;
x:byte;
ok:boolean;
begin
ok:=false;
for i:=1 to n do if st[i]=1 then begin
for j:=1 to m do a[i,j]:=-a[i,j];
ok:=true;
end;
if ok then
for j:=1 to m do begin
s:=0;
for i:=1 to n do s:=s+a[i,j];
if -s>s then for x:=1 to n do a[x,j]:=-a[x,j];
end;
suma:=0;
for i:=1 to n do
for j:=1 to n do suma:=suma+a[i,j];
for i:=1 to n do
for j:=1 to n do a[i,j]:=b[i,j];
end;
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,a[i,j]);
readln(f);
end;
for i:=1 to n do
for j:=1 to n do b[i,j]:=a[i,j];
k:=1;
st[k]:=-1;
maxi:=-maxint;
while k>0 do begin
repeat
succesor(st,k,as);
until as or not as;
if as then if k=n then begin
verif;
if suma>maxi then maxi:=suma;
end
else begin
inc(k);
st[k]:=-1;
end
else dec(k);
end;
writeln(g,maxi);
close(f);
close(g);
end.