Pagini recente » Cod sursa (job #2221785) | Cod sursa (job #1499514) | Cod sursa (job #753432) | Cod sursa (job #667787) | Cod sursa (job #473129)
Cod sursa(job #473129)
#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[NMAX][30],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[a][p];
}
return a;
}
int main()
{
fscanf(fin,"%i %i",&n,&m);
for(i=1;i<=n;i++) {
fscanf(fin,"%i",&x);
d[i][0]=x;
}
for(i=1;i<=n;i++) {
for(j=1;j<19;j++) {
d[i][j]=d[ d[i][j-1] ][j-1];
}
}
for(i=1;i<=m;i++) {
fscanf(fin,"%i %i",&j,&x);
fprintf(fout,"%i \n",stram(j,x));
}
fclose(fout);
return 0;
}