Cod sursa(job #1146730)

Utilizator heracleRadu Muntean heracle Data 19 martie 2014 11:20:52
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>

const int Q=250001;

int n,w;

int str[20][Q];

int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);

    scanf("%d%d",&n,&w);

    for(int i=1; i<=n; i++)
    {
        scanf("%d",&str[0][i]);
    }

    for(int i=1; i<=18; i++)
    {
        for(int j=1; j<=n; j++)
            str[i][j]=str[i-1][str[i-1][j]];
    }

    int p,k,pow;

    for(int i=1; i<=w; i++)
    {
        scanf("%d%d",&k,&p);
        pow=0;
        while(p!=0)
        {
            if(p%2==1)
            {
                k=str[pow][k];
            }
            pow++;
            p/=2;
        }
        printf("%d\n",k);
    }


    return 0;
}