Pagini recente » Cod sursa (job #2280717) | Cod sursa (job #2202388) | Cod sursa (job #2143423) | Cod sursa (job #962243) | Cod sursa (job #1042762)
#include <iostream>
#include <cstdio>
FILE *f,*g;
using namespace std;
int N,M,T[20][251000];
void read()
{
fscanf(f,"%d%d\n",&N,&M);
for(int i=1;i<=N;i++)
{
fscanf(f,"%d",&T[0][i]);
}
}
void make_stramosi()
{
int k=1;
while(1<<k < N)
{
for(int i=1;i<=N;i++)
T[k][i]=T[k-1][T[k-1][i]];
k++;
}
}
int main()
{
f=fopen("stramosi.in","r");
g=fopen("stramosi.out","w");
read();
make_stramosi();
for(int i=1;i<=M;i++)
{
int j,Q,P;
fscanf(f,"%d%d\n",&Q,&P);
while(P!=0)
{
for( j=20 ; j>=0 && (1<<j) > P ; j--);
Q=T[j][Q];
P-=(1<<j);
}
fprintf(g,"%d\n",Q);
}
fclose(f);
fclose(g);
return 0;
}