Pagini recente » Cod sursa (job #3041147) | Cod sursa (job #1805007) | Cod sursa (job #134958) | Cod sursa (job #292680) | Cod sursa (job #3207599)
#include <bits/stdc++.h>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int mos[250001];
int dp[20][250001];
int main()
{
int n, m;
in >> n >> m;
for( int i = 1; i <= n; i++ ){
in >> mos[i];
dp[0][i] = mos[i];
}
for( int i = 1 ; (1 << i) <= n; i++ ){
for( int j = 1; j <= n; j++){
dp[i][j] = dp[i - 1][dp[i-1][j]];
}
}
while( m-- ){
int a, b;
in >> a >> b;
int p = 0;
while( (1 << p) <= b )
p++;
p--;
while( b > 0 ){
a = dp[p][a];
b -= (1 << p);
while( (1 << p) <= b )
p++;
p--;
}
out << a << "\n" ;
}
return 0;
}