Pagini recente » Cod sursa (job #458641) | Cod sursa (job #2669945) | Cod sursa (job #2316937) | Cod sursa (job #493763) | Cod sursa (job #544658)
Cod sursa(job #544658)
#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]=j;
k=i-1;
while(k>=0)
{
T[i][j]=T[k][T[i][j]];
k--;
}
T[i][j]=T[0][T[i][j]];
}
for(i=1;i<=M;i++)
{
scanf("%d%d",&Q,&P);
sol=Q;
pow=0;
while(P>0)
{
if(P%2==1) sol=T[pow][sol];
pow++;
P>>=1;
}
printf("%d\n",sol);
}
return 0;
}