Cod sursa(job #911421)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 11 martie 2013 17:07:04
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<cstdio>
using namespace std;
const int NMAX = 250005;
const int logN = 20;
int n,m,i,j,k,dp[logN][NMAX],p,q;
int main()
{
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++) scanf("%d",&dp[0][i]);
    for(i=1,k=2;k<=n;i++,k<<=1)
        for(j=1;j<=n;j++) dp[i][j]=dp[i-1][dp[i-1][j]];
    for(;m;m--)
    {
        scanf("%d%d",&q,&p);
        while(p && q)
        {
            for(i=0,k=1;k<=p;i++,k<<=1); k>>=1; i--;
            q=dp[i][q];
            p-=k;
        }
        printf("%d\n",q);
    }
    return 0;
}