Cod sursa(job #860634)

Utilizator ColinCJCalin-Lucian ColinCJ Data 20 ianuarie 2013 15:28:27
Problema Jocul Flip Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.53 kb
program flip;
uses crt;
type matrice=array[1..20,1..20] of integer;
var
m:matrice;
S,Saux,Sl,Scom,Snou:integer;
i,j,n,l,curr,k,c,curr1:byte;
fi,fo:text;
x:array[1..20] of integer;


procedure tip(var m:matrice;l,c:byte);
var
i,j:integer;

begin
for i:=1 to l do
    begin
         for j:=1 to c do
             write(fo,M[i,j]:3);
         writeln(fo);
    end;
end;


begin
clrscr;
assign(fi,'Flip.in');
reset(fi);
readln(fi,l,c);
for i:=1 to l do
    for j:=1 to c do
        read(fi,M[i,j]);
close(fi);
assign(fo,'Flip.out');
rewrite(fo);

s:=0;
for i:=1 to l do
    for j:=1 to c do
       S:=S+M[i,j];
writeln('Suma actuala  ', s);

curr:=1;
writeln('Suma dupa comutarea liniilor+coloanelor(unde e necesar):');
delay(6000);
{Comutare linii}

while curr<l do
      begin
           n:=0;
           Sl:=0;
           Saux:=0;
           for j:=1 to c do
                    begin
                         Sl:=Sl+M[curr,j];{Cresc suma pe linia curr}
                         inc(n);          {Cresc capacitatea sirului X}
                         x[n]:=-M[curr,j];{Sirul cu indice N primeste opusul elem de pe linia matricei}
                    end;

           SAUX:=0;
           for i:=1 to n do
               Saux:=Saux+x[i];

           if Saux>=Sl then
                                begin
                                     for k:=1 to n do
                                       M[curr,k]:=x[k];
                                end

                      else inc(curr);


          end;



curr1:=1;

while curr1<c do
      begin
           n:=0;
           Sl:=0;
           Saux:=0;
           for j:=1 to l do
                    begin
                         Sl:=Sl+M[j,curr1];{Cresc suma pe coloana curr1}
                         inc(n);          {Cresc capacitatea sirului X}
                         x[n]:=-M[j,curr1];{Sirul cu indice N primeste opusul elem de pe coloana matricei}
                    end;

           SAUX:=0;
           for i:=1 to n do
              SAUX:=SAUX+x[i];

           if Saux>=Sl then
                                begin
                                     for k:=1 to n do
                                       M[k,curr1]:=x[k];
                                end

                      else inc(curr1);


          end;




Snou:=0;

for i:=1 to l do
    for j:=1 to c do
        Snou:=Snou+m[i,j];
writeln('Noua suma este  ', snou);
writeln('Matricea noua comutata...');
tip(m,l,c);
close(fo);
readln;
end.