Pagini recente » Cod sursa (job #2061225) | Cod sursa (job #1577418) | Cod sursa (job #1130067) | Cod sursa (job #1602450) | Cod sursa (job #1170988)
#include <cstdio>
#include <cmath>
using namespace std;
#define NMAX 250003
int n, m, p, q, logaritm;
int best[18][NMAX];
int main ()
{
freopen ("stramosi.in", "r", stdin);
freopen ("stramosi.out", "w", stdout);
scanf ("%d %d", &n, &m);
for (int i = 1, x; i <= n; ++i)
{
scanf ("%d", &x);
best[0][i] = x;
}
logaritm = log2 (n);
for (int i = 1; i <= logaritm; ++i)
{
for (int j = 1; j <= n; ++j)
best[i][j] = best[i - 1][best[i-1][j]];
}
for (int i = 1; i <= m; ++i)
{
scanf ("%d %d", &q, &p);
p <<= 1;
for (int j = 0; j <= logaritm; ++j)
{
if (q == 0) break;
p >>= 1;
if (p & 1) q = best[j][q];
}
printf ("%d\n", q);
}
return 0;
}