Cod sursa(job #318745)

Utilizator ZillaMathe Bogdan Zilla Data 29 mai 2009 10:09:15
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>

#define Nmax 250100

int n,q,a[19][Nmax];

void afiseaza(int j)
{
    int i,k;
    for(k=0;k<j;++k)
        {
            for(i=1;i<n;++i)
                printf("%d ",a[k][i]);
            printf("\n");
        }
            
}

int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    
    scanf("%d%d",&n,&q);
    
    int i,s=1,j=1,x,y,k;
    
    for(i=1;i<=n;++i)
        scanf("%d",&a[0][i]);
    
    while(s)
    {
        s=0;
        for(i=1;i<=n;++i)
            {
                a[j][i]=a[j-1][a[j-1][i]];
                if(a[j][i])
                    s=1;
            }
        ++j;
    }
  //  afiseaza(j);
    for(k=1;k<=q;++k)
        {
            int nr;
			scanf("%d%d",&y,&x);
            while(x)
            {
				nr=1;
				j=0;
				while((nr<<1)<=x)
					{
						nr=nr<<1;
						++j;
					}
				y=a[j][y];
                x-=nr;
            }
            printf("%d\n",y);
                    
        }
    return 0;
}