Pagini recente » Cod sursa (job #2025199) | Cod sursa (job #1293961) | Cod sursa (job #335658) | Cod sursa (job #1036090) | Cod sursa (job #977392)
Cod sursa(job #977392)
#include <vector>
#include <cstdio>
using namespace std;
const int MAX_N = 250002;
int N, M;
int dp[MAX_N][20], log2[MAX_N];
inline int Query(int x, int k) {
if(k > N)
return 0;
while(k) {
int t = log2[k];
x = dp[x][t];
k -= (1 << t);
}
return x;
}
int main() {
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &N, &M);
for(int i = 1; i <= N; ++i)
scanf("%d", &dp[i][0]);
for(int i = 2; i <= N; ++i)
log2[i] = log2[i/2] + 1;
for(int j = 1; (1 << j) <= N; ++j)
for(int i = 1; i <= N; ++i)
dp[i][j] = dp[dp[i][j-1]][j-1];
for(int i = 1, x, k; i <= M; ++i) {
scanf("%d %d", &x, &k);
printf("%d\n", Query(x, k));
}
return 0;
}