Cod sursa(job #1114335)

Utilizator SmarandaMaria Pandele Smaranda Data 21 februarie 2014 15:30:41
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>

#define NMAX 250002

int n,m;
int t[20][NMAX];


int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    int i,j,q,p,aux;

    scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
        scanf("%d",&t[0][i]);

    for(j=1;j<=19;++j)
        for(i=1;i<=n;++i)
            t[j][i]=t[j-1][t[j-1][i]];

    for(i=1;i<=m;++i)
    {
        scanf("%d%d",&q,&p);
        aux=1;j=0;
        while(aux<=p)aux<<=1,++j;
        --j;

        while(p)
        {
            q=t[j][q];

            p-=(1<<j);
            j>>=1;
        }

        printf("%d\n",q);
    }

    return 0;
}