Pagini recente » Cod sursa (job #630490) | Cod sursa (job #423301) | Cod sursa (job #273475) | Cod sursa (job #2849243) | Cod sursa (job #957954)
Cod sursa(job #957954)
#include<cstdio>
#include<vector>
#include<algorithm>
#define lsb(x) ((x)&(-x))
using namespace std;
int d[20][250005];
inline int lg(int x)
{
int ans=0;
for(int pas=1<<4;pas;pas>>=1)
if((1<<(ans+pas))<=x)
ans+=pas;
return ans;
}
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
int n,m,x,p;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&d[0][i]);
for(int i=1;(1<<i)<n;i++)
for(int j=1;j<=n;j++)
d[i][j]=d[i-1][ d[i-1][j] ];
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&p);
for(;p;p-=lsb(p))
x=d[lg(lsb(p))][x];
printf("%d\n",x);
}
return 0;
}