Pagini recente » Cod sursa (job #2170078) | Cod sursa (job #486975) | Cod sursa (job #3172348) | Cod sursa (job #3176190) | Cod sursa (job #302865)
Cod sursa(job #302865)
var a,c:array[1..16,1..16] of longint;
sol:array[1..16] of byte;
n,m,i,j,max:integer;
f,g:text;
procedure flip ( linie:integer );
var j:integer;
begin
for j:=1 to m do c[linie,j]:=-c[linie,j];
end;
procedure flip_col( coloana:integer );
var j:integer;
begin
for j:=1 to n do c[j,coloana]:=-c[j,coloana];
end;
procedure procesare;
var i,j:integer;
sum,suma_poz,suma_neg:longint;
begin
for i:=1 to n do
for j:=1 to m do c[i,j]:=a[i,j];
for i:=1 to m do if sol[i]=1 then flip_col(i);
sum:=0;
for i:=1 to n do
begin
suma_poz:=0;
for j:=1 to m do if c[i,j]>0 then inc(suma_poz,c[i,j]);
suma_neg:=0;
for j:=1 to m do if c[i,j]<0 then inc(suma_neg,c[i,j]);
if suma_poz < abs(suma_neg) then flip(i);
for j:=1 to m do sum:=sum+c[i,j];
end;
if sum > max then max:=sum;
end;
procedure back (l:integer);
var i:integer;
begin
if l = m then procesare
else
for i:=0 to 1 do
begin
sol[l+1]:=i;
back(l+1);
end;
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;
back(0);
writeln(g,max);
close(f); close(g);
end.