Cod sursa(job #13339)

Utilizator floringh06Florin Ghesu floringh06 Data 6 februarie 2007 12:05:20
Problema Jocul Flip Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.58 kb

var fi,fo:text;
    n,m,i,j:longint;
    col,int:array[1..20] of longint;
    v,aux:array[1..20,1..20] of longint;
    max,peak:longword;
    l1:longint;
    a:array[0..35000,1..16] of integer;



procedure sumcol(x:longint);
   var sum,j:longint;
    begin
     sum:=0;
      for i:=1 to n do
        sum:=sum+v[i,x];
      col[x]:=sum;
    end;



 procedure invlin(x:longint);
   var j:longint;
    begin
      for j:=1 to m do
        col[j]:=col[j]-2*v[x,j];
    end;




 procedure gosolve;
  var i,j,k,l:longint;
    begin
     for i:=1 to m do
       sumcol(i);
     int:=col;
     for i:=0 to (1 shl n) do
      begin
       col:=int;
       for j:=1 to n do
         if ((1 shl (j-1)) and i)<>0 then invlin(j);
       peak:=0;
       for j:=1 to m do
         if col[j]>0 then peak:=peak+col[j]
           else peak:=peak+abs(col[j]);
       if peak>max then max:=peak;
       for j:=1 to n do
         if ((1 shl (j-1)) and i)<>0 then invlin(j);
      // writeln(fo,peak);
      end;
    end;



 begin
  peak:=maxlongint;
  assign(fi,'flip.in'); reset(fi);
  assign(fo,'flip.out'); rewrite(fo);
  readln(fi,n,m);
  for i:=1 to n do
   begin
    for j:=1 to m do
     read(fi,v[i,j]);
    readln(fi);
   end;
  case n of
   1: l1:=1;
   2: l1:=3;
   3: l1:=7;
   4: l1:=15;
   5: l1:=31;
   6: l1:=63;
   7: l1:=127;
   8: l1:=255;
   9: l1:=511;
   10: l1:=1023;
   11: l1:=2047;
   12: l1:=4095;
   13: l1:=8191;
   14: l1:=16383;
   15: l1:=32767;
  end;
 gosolve;
  write(fo,max);
  close(fi);
  close(fo);
 end.