Cod sursa(job #199158)

Utilizator szabibibiOrban Szabolcs szabibibi Data 17 iulie 2008 10:13:49
Problema Jocul Flip Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.51 kb
var f,g:text;
    n,m:byte;
    flip:array [1..16,1..16] of longint;
    max,osszeg:longint;
    u:record
        i,j:byte
      end;





function osszegel:longint;
var i,j:byte;
    ossz:longint;
begin
    ossz:=0;
    for i:=1 to n do
        for j:=1 to m do
            ossz:=ossz+flip[i,j];
    osszegel:=ossz
end;



procedure olvas;
var i,j:byte;
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,flip[i,j]);
        readln(f)
    end;
    close(f)
end;



procedure flippel(a,b:byte);
var i:byte;
begin
    for i:=1 to m do
        flip[a,i]:=flip[a,i]*(-1);
    for i:=1 to n do
        flip[i,b]:=flip[i,b]*(-1);
    flip[a,b]:=flip[a,b]*(-1)
end;



procedure maxxamol;
var i,j:byte;
    osszeg,fliposszeg,totosszeg:longint;
begin
max:=-1;
osszeg:=osszegel;
for i:=1 to n do begin
    for j:=1 to m do begin
        flippel(i,j);
        fliposszeg:=osszegel;
        flippel(i,j);
        totosszeg:=fliposszeg-osszeg;
        if totosszeg>max then begin
            max:=totosszeg;
            u.i:=i;
            u.j:=j
        end
    end
end
end;



procedure megold;
begin
    maxxamol;
    while max>0 do begin
        flippel(u.i,u.j);
        maxxamol
    end;
    osszeg:=osszegel
end;


procedure kiir;
begin
    assign(g,'flip.out');
    rewrite(g);
    writeln(g,osszeg);
    close(g)
end;



begin
    olvas;
    megold;
    kiir
end.