Pagini recente » Cod sursa (job #1381015) | Cod sursa (job #567631) | Cod sursa (job #2829264) | Cod sursa (job #1219709) | Cod sursa (job #3152126)
#include <bits/stdc++.h>
#define MAXN 250000
#define MAXM 300000
#define LOGMAX 19
using namespace std;
ifstream fin( "stramosi.in" );
ofstream fout( "stramosi.out" );
int bl[LOGMAX][MAXN + 1];
int v[MAXN];
int p2[LOGMAX];
int lg2[MAXM + 1];
int main(){
int n, m, i, k, poz, moves, bit;
fin >> n >> m;
for( i = 1; i <= n; i++ )
fin >> v[i], bl[0][i] = v[i];
p2[0] = 1;
for( i = 1; i < LOGMAX; i++ )
p2[i] = 2 * p2[i - 1];
lg2[1] = 0;
for( i = 2; i <= MAXM; i++ )
lg2[i] = lg2[i / 2] + 1;
for( k = 1; k <= lg2[m]; k++ ){
for( i = 1; i <= n; i++ ){
bl[k][i] = bl[k - 1][ bl[k - 1][i] ];
}
}
for( i = 0; i < m; i++ ){
fin >> poz >> moves;
for( bit = 1; bit <= moves; bit *= 2 ){
if( bit & moves )
poz = bl[ lg2[bit] ][poz];
}
fout << poz << '\n';
}
}