Pagini recente » Cod sursa (job #406459) | Cod sursa (job #2378016) | Cod sursa (job #2367894) | Cod sursa (job #2807972) | Cod sursa (job #1054256)
#include <cstdio>
#include <vector>
using namespace std;
FILE*f=fopen("stramosi.in","r");
FILE*h=fopen("stramosi.out","w");
int m[22][250001],n,w,a;
int main()
{
fscanf(f,"%d%d",&n,&w);
for ( int i=1;i<=n;++i ){
fscanf(f,"%d",&a);
m[0][i]=a;
}
for ( int i=1;i<=20;++i ){
for ( int j=1;j<=n;++j ){
m[i][j]=m[i-1][m[i-1][j]];
}
}
for ( int i=1;i<=w;++i ){
int q,p;
fscanf(f,"%d%d",&q,&p);
int k=20;
while ( p>0 ){
if ( (1<<k)<=p ){
q=m[k][q];
p=p-(1<<k);
}
--k;
}
fprintf(h,"%d\n",q);
}
return 0;
}