Pagini recente » Cod sursa (job #919163) | Cod sursa (job #3228634) | Cod sursa (job #2401627) | Cod sursa (job #956865) | Cod sursa (job #2052498)
#include <cstdio>
#include <vector>
using namespace std;
int d[18][250001];
int v[250001];
int main()
{
FILE *fin=fopen ("stramosi.in","r");
FILE *fout=fopen ("stramosi.out","w");
int n,m,i,k,a,b;
fscanf (fin,"%d%d",&n,&m);
for (i=2;i<=n;i++)
v[i]=v[i/2]+1;
for (i=1;i<=n;i++)
fscanf (fin,"%d",&d[0][i]);
k=1;
while ((1<<k)<=n){
for (i=1;i<=n;i++)
d[k][i]=d[k-1][d[k-1][i]];
k++;
}
for (;m;m--){
fscanf (fin,"%d%d",&a,&b);
while (b && a!=0){
a=d[v[b]][a];
b=b-(1<<v[b]);
}
fprintf (fout,"%d\n",a);
}
return 0;
}