Cod sursa(job #281583)

Utilizator FllorynMitu Florin Danut Flloryn Data 15 martie 2009 13:45:19
Problema Planeta Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.08 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.