Cod sursa(job #30072)

Utilizator QbyxEros Lorand Qbyx Data 12 martie 2007 18:09:23
Problema Jocul Flip Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.37 kb
program Fliper;
var
  mat1, mat2: array[1..16,1..16] of longint;
  n, m, k: byte;
  v: array[0..17] of shortint;
  max: longint;
  van: boolean;
  f: text;

procedure BeOlvas;
var
  f: text;
  i, j: byte;
begin
  Assign(f, 'flip.in');
  Reset(f);
  Readln(f, n, m);
  for i := 1 to n do
    for j := 1 to m do
      Read(f, mat1[i,j]);
  Close(f);
end;

procedure Flip(y: byte);
var i: byte;
begin
  for i := 1 to m do
    mat2[y,i] := mat2[y,i] * (-1);
end;


procedure Kovetkezo(k: integer; var van: boolean);
begin
  if (v[k] < 1) and (k < n)then
    begin
      Inc(v[k]);
      van := true
    end
  else van := false;
end;

procedure MegFigyel;
var
  i, j: byte;
  ertek, ertek2: longint;
begin
  ertek := 0;
  ertek2 := 0;
  for i := 1 to n do
    if v[i] = 1 then Flip(i);
  for i := 1 to m do
    begin
      for j := 1 to n do
        ertek2 := ertek2 + mat2[j,i];
      ertek := ertek + abs(ertek2);
      ertek2 := 0;
    end;
  if ertek > max then max := ertek;
end;

Begin
  BeOlvas;
  max := 0;
  k := 1; v[k] := -1;
  while k > 0 do
    begin
      mat2 := mat1;
      Kovetkezo(k, van);
      if van then
        begin
          if van then Megfigyel;
          Inc(k);
          v[k] := -1;
        end
      else Dec(k);
    end;
  Assign(f, 'flip.out');
  ReWrite(f);
  Writeln(f, max);
  Close(f);
end.