Pagini recente » Cod sursa (job #1772071) | Cod sursa (job #434946) | Cod sursa (job #1045071) | Cod sursa (job #2425531) | Cod sursa (job #199430)
Cod sursa(job #199430)
#include <stdio.h>
#include <algorithm>
#define mx 310000
using namespace std;
long ac[20][mx];
long n, m, x, p, q;
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%ld %ld", &n, &m);
for (int i = 1; i <= n; i++)
{
scanf("%ld", &x);
ac[i][1] = x;
}
for (int i = 1; i <= n; i++)
{
long r = ac[i][1];
for (int j = 1, st = 2; j < 20; j <<= 1, st++)
{
r = ac[r][j];
ac[i][st] = r;
}
}
for (int i = 0; i < m; i++)
{
scanf("%ld %ld", &q, &p);
int x = 1;
while (x <= p)
x *= 2;
while (p && q)
{
x /= 2;
if (x <= p)
{
q = ac[q][x];
p -= x;
}
}
printf("%ld\n", q);
}
fclose(stdin);
fclose(stdout);
return 0;
}