Pagini recente » Cod sursa (job #1505828) | Cod sursa (job #1300509) | Cod sursa (job #1407577) | Cod sursa (job #1026026) | Cod sursa (job #3273118)
#include <iostream>
#include <ctgmath>
#define NMAX 250000
using namespace std;
int n, q, x, dpt;
int rmq[18][NMAX + 2];
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &n, &q);
for(int i = 1; i <= n; i++)
scanf("%d", &rmq[0][i]);
int lgb = log2(n);
for(int i = 1; i <= lgb; i++)
for(int j = 1; j <= n; j++)
rmq[i][j] = rmq[i-1][rmq[i-1][j]];
for(int i = 1; i <= q; i++)
{
scanf("%d %d", &x, &dpt);
int st = x;
for(int p = int(log2(dpt)); p >= 0 && st != 0; p--)
if(dpt & (1 << p))
st = rmq[p][st];
printf("%d\n", st);
}
return 0;
}