Cod sursa(job #254753)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 7 februarie 2009 13:58:05
Problema Planeta Scor 100
Compilator fpc Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.88 kb
var a:array[1..40] of longint;
    sol:array[0..40] of int64;
    f,g:text;
    n,k:int64;
    i,j:longint;

procedure complete(st,dr,plus,nr:int64);
 var i,vf,n:longint;
     stanga,dreapta:int64;
 begin
  n:=dr-st+1;
  for i:=1 to n do
   if sol[i-1]*sol[n-i]>=nr then begin
    vf:=i;
    break;
   end
   else
    nr:=nr-sol[i-1]*sol[n-i];
  if (st<=dr) and (n<>0) then begin
   a[st]:=vf+plus-1;
   stanga:=(nr-1) div sol[n-i]+1;
   dreapta:=nr-(stanga-1)*sol[n-i];
   complete(st+1,st+vf-1,plus,stanga);
   complete(st+vf,dr,plus+vf,dreapta);
  end;
 end;

begin
 assign(f,'planeta.in'); reset(f);
 assign(g,'planeta.out'); rewrite(g);
 read(f,n,k);
 sol[0]:=1; sol[1]:=1;
 for i:=2 to n do
  for j:=1 to i do
   sol[i]:=sol[i]+sol[j-1]*sol[i-j];
 complete(1,n,1,k);
 for i:=1 to n-1 do
  write(g,a[i],' ');
 writeln(g,a[n]);
 close(f); close(g);
end.