Pagini recente » Cod sursa (job #1906524) | Cod sursa (job #1760122) | Cod sursa (job #2484522) | Cod sursa (job #1179702) | Cod sursa (job #1786678)
#include <stdio.h>
#define MAX_N 250000
using namespace std;
int v[MAX_N+2][19];
int main()
{
int n, m, i, j, pe, a, nr, p;
FILE *fi=fopen("stramosi.in", "r"), *fo=fopen("stramosi.out", "w");
fscanf(fi, "%d%d", &n, &m);
for(i=1;i<=n;i++)
fscanf(fi, "%d", &v[i][0]);
for(i=1;i<=n;i++){
pe=1;
a=i;
j=0;
do{
j++;
a=v[a][0];
if(j==1<<pe){
v[i][pe]=a;
pe++;
}
}while(a!=0);
}
for(j=0;j<m;j++){
fscanf(fi, "%d%d", &a, &nr);
pe=0;
p=1;
while(p<=nr){
p*=2;
pe++;
}
for(pe--;pe>=0;pe--)
if(1<<pe<=nr){
a=v[a][pe];
nr-=(1<<pe);
}
fprintf(fo, "%d\n", a);
}
fclose(fi);
fclose(fo);
return 0;
}