Cod sursa(job #504317)

Utilizator careizoliZoltan Vicsacsan careizoli Data 27 noiembrie 2010 14:08:31
Problema Jocul Flip Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.4 kb

var f:text;
a:array[0..16,0..16]of longint;
ii,jj,i,j,n,m:byte;
mini,minj,sum,ujsum:longint;

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

procedure fliposzlop(j:byte);
var i:byte;
begin
 for i:=0 to n do a[i,j]:=-a[i,j];
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 begin
     read(f,a[i,j]);
     inc(a[i,0],a[i,j]);
     inc(a[0,j],a[i,j]);
   end;

end;

close(f);
mini:=a[1,0];ii:=1;for i:=2 to n do if a[i,0]<mini then begin mini:=a[i,0]; ii:=i; end;
minj:=a[0,1];jj:=1;for j:=2 to m do if a[0,j]<minj then begin minj:=a[0,j]; jj:=j; end;
sum:=0;
if n<m then for i:=1 to n do inc(sum, a[i,0])
    else for j:=1 to m do inc(sum, a[0,j]);

ujsum:=sum;
if mini<minj then begin
        for i:=1 to n do
          if a[i,0]<0 then begin
             flipsor(i);
             inc(ujsum, 2*a[i,0]);
        end;
        for j:=1 to m do
          if a[0,j]<0 then begin
             inc(ujsum, -2*a[0,j]);
        end
end
else begin
        for j:=1 to m do
          if a[0,j]<0 then begin
             fliposzlop(j);
             inc(ujsum, 2*a[0,j]);
        end;
        for i:=1 to n do
          if a[i,0]<0 then begin
            { flipsor(i);}
             inc(ujsum, -2*a[i,0]);
        end
end;
assign(f,'flip.out');
rewrite(f);
write(f,ujsum);
close(f);
end.