Cod sursa(job #219436)

Utilizator mihai0110Bivol Mihai mihai0110 Data 6 noiembrie 2008 22:00:40
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#include<math.h>
#define NMAX 250001
#define LGMAX 20
int n,m,i,j,p,q,anc,k,xl;
int a[LGMAX][NMAX];
int main(void)
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        scanf("%d",&a[0][i]);
    xl=ceil(log(n)/log(2));
    for(i=1;i<=xl;i++)
        for(j=1;j<=n;j++)
            a[i][j]=a[i-1][a[i-1][j]];
    for(j=1;j<=m;j++)
    {
        scanf("%d%d",&q,&p);
        anc=q;
        k=0;
        while(p)
        {
            if(p&1)
                anc=a[k][anc];
            k++;
            p>>=1;
        }
        printf("%d\n",anc);
    }
    return 0;
}