Cod sursa(job #190203)

Utilizator adibAdrian Bona adib Data 20 mai 2008 21:18:01
Problema Jocul Flip Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.18 kb
program flip;
var f:text;
    n,m,i,j,max,k:integer;
    dat:array[1..16,1..16] of longint;
    gata:boolean;

procedure flipc(x:integer);
var i:integer;
begin
for i:=1 to n do
  dat[i,x]:=-dat[i,x];
end;

procedure flipl(x:integer);
var i:integer;
begin
for i:=1 to m do
  dat[x,i]:=-dat[x,i];
end;

function sumac(x:integer):integer;
var s,i:integer;
begin
s:=0;
for i:=1 to n do
  s:=s+dat[i,x];
sumac:=s;
end;

function sumal(x:integer):integer;
var s,i:integer;
begin
s:=0;
for i:=1 to m do
  s:=s+dat[x,i];
sumal:=s;
end;


procedure back(p:integer);
begin
for i:=p to n do
  if sumal(i)<0 then
    begin
      flipl(i);
      k:=0;
      for j:=1 to m do
        begin
          if sumac(j)<0 then
            flipc(j);
          k:=k+sumac(j);
        end;
      if k>max then
        max:=k;
    end;
if p<n then
  back(p+1);
end;

begin
assign(f,'flip.in');
reset(f);
read(f,n);
readln(f,m);
for i:=1 to n do
  begin
    for j:=1 to m do
      read(f,dat[i,j]);
    readln(f);
  end;
close(f);
max:=0;
for i:=1 to n do
  max:=max+sumal(i);
back(1);
assign(f,'flip.out');
rewrite(f);
writeln(f,max);
close(f);

end.