Cod sursa(job #694264)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 27 februarie 2012 19:34:46
Problema Ghiozdan Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.97 kb
var p, v:array [0..75000] of longint;
    r:array[1..20000] of longint;
    max, i, j, n, m, x, t, k:longint;
    f, g:text;

begin
assign (f, 'ghiozdan.in'); reset (f);
assign (g, 'ghiozdan.out'); rewrite (g);

read (f, n, m);
max:=0;
for i := 1 to m do v[i]:=maxlongint;

for i := 1 to n do
  begin
  readln (f, x);
  for j := max downto 0 do
    begin
    if (v[j]<>maxlongint) and (j+x<=m) and (v[j]+1<v[j+x]) then
      begin
      v[j+x]:=v[j]+1;
      p[j+x]:=j;
      if j+x>=max then
        begin
        max:=j+x;
        k:=max; t:=0;
        while k <> 0 do
          begin
          inc (t);
          r[t]:=k-p[k];
          k:=p[k];
          end;
        end;
      end;
    end;
{  if (v[x]>1) then
    begin
    v[x]:=1;
    p[x]:=0;
    if x>=max then
      begin
      t:=1; r[1]:=x;
      max:=x;
      end;
    end;
}  end;

writeln (g, max, ' ', t);
for i := 1 to t do writeln (g, r[i]);

close (f); close (g);
end.