Cod sursa(job #791214)

Utilizator DisturbedTeuca Sergiu Disturbed Data 23 septembrie 2012 13:34:24
Problema Jocul Flip Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 3.2 kb
program flip;
VAR
        v:array[1..16,1..16] of longint;
        i,j,n,m,k:integer;
        f,g:text;
        s,s1,s2,s3,s4,dif1,dif2:longint;
Begin
        assign(f,'flip.in'); Reset(f);
        assign(g,'flip.out'); Rewrite(g);
        readln(f,n,m);
        for i:=1 to n do begin
                for j:=1 to m do
                        read(f,v[i,j]);
                        read(f);
                end;
        for i:=1 to n do
                for j:=1 to m do begin
                        dif1:=0; dif2:=0;
                        s1:=0; s2:=0;
                        s3:=0; s4:=0;
                        for k:=1 to n do begin
                                s1:=s1+v[k,j];
                                s2:=s2-v[k,j];
                        end;
                        for k:=1 to m do begin
                                s3:=s3+v[i,k];
                                s4:=s4-v[i,k];
                        end;
                        if (s2>s1) and (s4>s3) then begin
                                        s4:=s4-v[i,j];
                                        dif1:=s2+s4;
                                        s4:=s4+v[i,j];
                                        s2:=s2-v[i,j];
                                        dif2:=s2+s4;
                                        if dif1>dif2 then begin
                                                for k:=1 to n do
                                                        v[k,j]:=v[k,j]*(-1);
                                                for k:=1 to m do
                                                        v[i,k]:=v[i,k]*(-1);
                                                end else begin
                                                for k:=1 to m do
                                                        v[i,k]:=v[i,k]*(-1);
                                                for k:=1 to n do
                                                        v[k,j]:=v[k,j]*(-1);
                                                end;
                                                end else
                        if s2>s1 then begin
                                dif1:=s3+s1;
                                s3:=s3-v[i,j];
                                dif2:=s3+s2;
                                if dif2>dif1 then begin
                                        for k:=1 to n do
                                                v[k,j]:=v[k,j]*(-1);
                                end;
                                end
                                else if s4>s3 then begin
                                        dif1:=s1+s3;
                                        s1:=s1-v[i,j];
                                        dif2:=s4+s1;
                                                if dif2>dif1 then
                                                        for k:=1 to m do
                                                                v[i,k]:=v[i,k]*(-1);
                                end;
                                end;


        s:=0;
        for i:=1 to n do
                for j:=1 to m do
                        s:=s+v[i,j];
        writeln(g,s);
        close(g);
end.






end.