Cod sursa(job #544662)
| Utilizator | Data | 1 martie 2011 21:49:18 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <stdio.h>
#include <string.h>
int T[30][250100];
int i,j,k,N,M,sol,pow,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",&T[0][i]);
for(i=1;(1<<i)<=N;i++)
for(j=1;j<=N;j++)
T[i][j]=T[i-1][T[i-1][j]];
for(i=1;i<=M;i++)
{
scanf("%d%d",&Q,&P);
sol=Q;
pow=0;
while(P>0)
{
if(P&1) sol=T[pow][sol];
pow++;
P>>=1;
}
printf("%d\n",sol);
}
return 0;
}
