Pagini recente » Cod sursa (job #2434027) | Cod sursa (job #3157363) | Cod sursa (job #782931) | Cod sursa (job #811574) | Cod sursa (job #473130)
Cod sursa(job #473130)
#include <iostream>
#include <stdio.h>
using namespace std;
#define NMAX 251001
#define MMAX 351001
FILE *fin=fopen("stramosi.in","r");
FILE *fout=fopen("stramosi.out","w");
int d[30][NMAX],i,j,n,m,x;
int stram(int a, int st) {
int inc=262144,p=18;
while(st>0) {
while (st<inc) {
p--;
inc=inc>>1;
}
st-=inc;
if (a<=0&&st>0) return 0;
a=d[p][a];
}
return a;
}
int main()
{
fscanf(fin,"%i %i",&n,&m);
for(i=1;i<=n;i++) {
fscanf(fin,"%i",&x);
d[0][i]=x;
}
for(i=1;i<=n;i++) {
for(j=1;j<19;j++) {
d[j][i]=d[j-1][ d[j-1][i] ];
}
}
for(i=1;i<=m;i++) {
fscanf(fin,"%i %i",&j,&x);
fprintf(fout,"%i \n",stram(j,x));
}
fclose(fout);
return 0;
}