Cod sursa(job #554069)

Utilizator C0Mr4d3yonootz321 C0Mr4d3 Data 14 martie 2011 16:22:43
Problema Jocul Flip Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.49 kb
program flip;
var m,n,i,j:byte;
    f:text;
    a:array[1..16,1..16] of longint;
    smax:longint;

function suma:longint;
var i,j:byte;
    s:longint;
begin
  s:=0;
  for i:=1 to n do
    for j:=1 to m do
      s:=s+a[i,j];
  suma := s;
end;

function suma_col(nrc:byte):longint;
var i:byte;
    s:longint;
begin
  s:=0;
  for i:=1 to n do
    s:=s+a[i,nrc];
  suma_col:=s;
end;

procedure flipcoloana(j:byte);
var i:byte;
begin
  for i:=1 to n do
    a[i,j]:=-1*a[i,j];
end;

procedure fliplinie(i:byte);
var j:byte;
begin
  for j:=1 to m do
    a[i,j]:=-1*a[i,j];
end;

procedure back(i: byte);
var j,p,k:byte;
    s,scol:longint;
begin
  if i = n+1 then
    begin
      s := 0;
      for p := 1 to m do
        begin
          scol := suma_col(p);
          if scol < 0 then
            begin
              flipcoloana(p);
              scol := -scol;
            end;
          s := s + scol;
        end;
      if s>smax then
        smax:=s;
    end
  else
      for k := 1 to 2 do
        if k = 1 then
          begin
            fliplinie(i);
            back(i+1);
            fliplinie(i);
          end
        else
          back(i+1);
end;

begin
  assign(f,'flip.in');
  reset(f);
  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;
  close(f);
  smax:=0;
  back(1);
  assign(f,'flip.out');
  rewrite(f);
  writeln(f,smax);
  close(f);
end.