Pagini recente » Statistici Georgiana Petricele (georgip) | Cod sursa (job #1644218) | Cod sursa (job #2213879) | Monitorul de evaluare | Cod sursa (job #2743445)
//Ilie Dumitru
#include<cstdio>
int N, stramos[19][263005], log[263000];
void compute()
{
int i, j, lj;
for(j=1, lj=0;j<19;++j, ++lj)
for(i=1<<j;i<=N;++i)
stramos[j][i]=stramos[lj][stramos[lj][i]];
}
int solve(int a, int b)
{
if(!a)
return 0;
if(b)
{
int n=b&(b-1);
return solve(stramos[log[b-n]][a], n);
}
return a;
}
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
int M, i, a, b;
scanf("%d%d", &N, &M);
for(i=1<<18, a=18;i>0;log[i]=a--, i>>=1);
for(i=1;i<=N;++i)
scanf("%d", &stramos[0][i]);
compute();
do
{
scanf("%d%d", &a, &b);
printf("%d\n", solve(a, b));
}while(--M);
fclose(stdin);
fclose(stdout);
return 0;
}