Cod sursa(job #254465)

Utilizator ErgoVicol Sergiu Constantin Ergo Data 7 februarie 2009 12:18:52
Problema Planeta Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.09 kb
#include <fstream>

using namespace std;

ifstream fin("planeta.in");
ofstream fout("planeta.out");

#define NMAX 32

long long A[NMAX],n,k,sum,B[NMAX];

void cauta(int u,int l,int s,int r)
{
        int i,p=0;
        for (i=0; i<=l-1,s-p>0;i++)
        {
                p+=A[i]*A[l-1-i];
        }
        i--;
        p-=A[i]*A[l-1-i];
        if (r==0)
                fout<<u+i<<' ';
        else fout<<1+i<<' ';
        s-=p;
        int ax=s%A[i];
        if (i==0) ax=s;
        int ax2;
        if (ax==0) ax2=s/A[i]; else ax2=s/A[i]+1;
        if (ax==0) ax=A[i];
        if (i==l-1) ax2=s;
        if (i>0)
                cauta(1,i,ax2,1);
        if (i<l-1)
                cauta(u+i+1,l-i-1,ax,0);
        
}
int main()
{
        fin>>n>>k;
        int i,j;
        A[0]=1;
        A[1]=1;
        A[2]=2;
        sum=3;
        for (i=3;i<=n;i++)
        {
                for (j=0;j<=i-1;j++)
                        A[i]+=A[j]*A[i-1-j];
                        B[i]=A[i];
        }
        B[1]=1; B[2]=2; B[0]=0;
        fout<<'\n';
        cauta(1,n,k,1);
        fout.close();
        return 0;
}