Pagini recente » Cod sursa (job #2975137) | Cod sursa (job #73186) | Cod sursa (job #2850772) | Cod sursa (job #249846) | Cod sursa (job #1900901)
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
using namespace std;
const int N = 250010 ;
const int LOGN = 18 ;
int dp [ LOGN ][ N ];
int main(){
int n , i ,q ;
int a , b , j ;
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d",&n);
scanf("%d",&q);
for ( i = 1 ; i <= n ; i ++ ){
scanf("%d",&dp [ 0 ][ i ] ) ;
}
for ( i = 1 ; i <= n ; i++ ){
for ( j = 1 ; (1<<j ) <= n ; j++ ){
dp [ j ] [ i ] = dp [ j - 1 ][ dp [ j -1 ][ i ] ];
}
}
for ( i = 0 ; i < q ; i ++ ){
scanf("%d%d",&a,&b);
for ( j = 0 ; ( 1<<j ) <=n ; j++ ){
if ( b & ( 1<<j ) ){
b -= 1<<j;
a = dp [ j ] [ a ];
}
}
printf("%d\n",a);
}
return 0;
}