Cod sursa(job #19121)

Utilizator izso88istvan zsolt izso88 Data 18 februarie 2007 19:30:06
Problema Ghiozdan Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.51 kb
const gmaxc=600;
      nmaxc=20000;

var tomb:array[0..gmaxc,0..nmaxc] of word;
    hany:array[1..nmaxc] of word;
    t:text;
    N,G,GO,MAXE,i,al,j,co,u,hanyz:longint;


begin
     assign(t,'ghiozdan.in');
     reset(T);
      read(t,N);
      read(t,G);
      co:=1;
      read(t,tomb[0,1]);
      hany[1]:=1;
      go:=tomb[0,1];
      MAXE:=go;
      for i:=2 to n do begin
                       read(t,j);
                       if j>maxe then maxe:=j;
                       go:=go+j;
                       if j=tomb[0,co] then inc(hany[co]) else
                       begin
                       inc(co);
                       hany[co]:=1;
                       tomb[0,co]:=j;
                       end;
                       end;
      n:=co;
     closE(T);
     hanyz:=0;
{
     for i:=1 to gmaxc do for j:=1 to nmaxc do tomb[i,j]:=0;



     i:=0;
     if go>g then go:=g;
     for al:=1 to go do begin
     inc(i);
       j:=0;
       while (j<n) and ((tomb[i,0]>2) or (tomb[i,0]=0)) do
        begin
        inc(j);
         co:=i-tomb[0,j];

         if co>0 then begin if (tomb[co,j]<hany[j]) and (tomb[co,0]>0) then
                        if ((tomb[co,0]+1)<tomb[i,0]) or (tomb[i,0]=0) then
                       begin
                        for u:=0 to n do tomb[i,u]:=tomb[co,u];
                         tomb[i,j]:=tomb[i,j]+1;
                         inc(tomb[i,0]);
                       end;
         end
         else
         if co=0 then  begin
                        for u:=0 to n do tomb[i,u]:=0;
                         tomb[i,j]:=1;
                         inc(tomb[i,0]);
                       end;





        end;

           if al mod 400=0 then begin
                            for j:=201 to 400 do
                             for co:=0 to n do
                              tomb[j-200,co]:=tomb[j,co];
                            for j:=200+1 to 400 do
                             for co:=0 to n do tomb[j,co]:=0;
                              i:=i-200;
                              hanyz:=hanyz+1;
                            end;

     end;

     u:=600;
     while tomb[u,0]=0 do
       begin
       u:=u-1;
       if u=0 then u:=1;
       end;
     assign(t,'ghiozdan.out');
     rewrite(T);
      write(t,u+hanyz*200,' ');
      writeln(t,tomb[u,0]);
      for i:=1 to n do
       if tomb[u,i]>0 then
        for j:=1 to tomb[u,i] do
                          writeln(t,tomb[0,i]);
     close(t);

 }
end.