Pagini recente » Cod sursa (job #1364784) | Cod sursa (job #371381) | Cod sursa (job #1924895) | Cod sursa (job #835930) | Cod sursa (job #956178)
Cod sursa(job #956178)
#include <cstdio>
using namespace std;
int N, M, i, j, p, P, Q, x, pw;
int T[21][250001];
int main() {
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d", &N, &M);
for (p = 1; 2 * p <= N; p *= 2, ++pw);
for (i = 1; i <= N; ++i) scanf("%d", &T[0][i]);
for (j = 1; j <= pw; ++j)
for (i = 1; i <= N; ++i)
T[j][i] = T[j - 1][T[j - 1][i]];
for (; M > 0; --M) {
scanf("%d%d", &Q, &P);
x = Q;
for (p = 1, i = 0; 2 * p <= P; p *= 2, ++i);
for (; p > 0 && P > 0; p /= 2, --i) if (p <= P) x = T[i][x], P -= p;
printf("%d\n", x);
}
return 0;
}