Cod sursa(job #51649)

Utilizator h_istvanHevele Istvan h_istvan Data 15 aprilie 2007 23:33:45
Problema Jocul Flip Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.61 kb
program flip;
var f:text;
    n,m,i,j:byte;
    t:array[1..16,1..16] of longint;
    e:longint;
    control:boolean;

function okr(r:byte):boolean;
var i:byte;
    po,no:longint;
begin
     po:=0;no:=0;
     for i:=1 to m do
         if(t[r,i] >= 0) then po:=po+t[i,j]
                         else no:=no+t[i,j];
     if(abs(no) > abs(po)) then okr:=true
                            else okr:=false;
end;

function okc(c:byte):boolean;
var i:byte;
    po,no:longint;
begin
     po:=0;no:=0;
     for i:=1 to n do
         if(t[i,c] >= 0) then po:=po+t[i,j]
                         else no:=no+t[i,j];
     if(abs(no) > abs(po)) then okc:=true
                            else okc:=false;
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,t[i,j]);
          readln(f);
     end;
     close(f);

     control:=false;
     while not(control) do
     begin
          control:=true;
          for i:=1 to n do
              if okr(i) then
              begin
                   control:=false;
                   for j:=1 to m do
                       t[i,j]:=-1*t[i,j];
              end;
          for j:=1 to m do
              if okc(j) then
              begin
                   control:=false;
                   for i:=1 to n do
                       t[i,j]:=-1*t[i,j];
              end;
     end;

     e:=0;
     for i:=1 to n do
         for j:=1 to m do
             e:=e+t[i,j];

     assign(f,'flip.out');
     rewrite(f);
     writeln(f,e);
     close(f);
end.