Pagini recente » Cod sursa (job #3150544) | Istoria paginii utilizator/prajitu | Profil M@2Te4i | Statistici Sirbu Alexandru (SirbuAlexandru) | Cod sursa (job #199440)
Cod sursa(job #199440)
#include <stdio.h>
#include <algorithm>
#define mx 250010
using namespace std;
long ac[mx][22];
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; j < 20; j++)
{
r = ac[r][j];
ac[i][j + 1] = r;
}
}
for (int i = 0; i < m; i++)
{
scanf("%ld %ld", &q, &p);
int x = 0;
while ((1 << x) <= p)
x++;
while (p && q)
{
x--;
if ((1 << x) <= p)
{
q = ac[q][x+1];
p -= (1 << x);
}
}
printf("%ld\n", q);
}
fclose(stdin);
fclose(stdout);
return 0;
}