Pagini recente » Cod sursa (job #2848154) | Cod sursa (job #3355823) | Cod sursa (job #3312933) | Monitorul de evaluare | Cod sursa (job #3338010)
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int far[19][250010], i, j, lgmax, a, b, n, q;
int main()
{
in >> n >> q;
lgmax = log2(n);
for (i = 1; i <= n; i++)
in >> far[0][i];
for (i = 1; (1<<i) <= n; i++)
for (j = 1; j <= n; j++)
far[i][j] = far[i-1][far[i-1][j]];
while(q)
{
--q;
in >> a >> b;
for (i = lgmax; i >= 0; i--)
if (((1<<i)&b) != 0)
{
a = far[i][a];
b ^= (1<<i);
}
out << a << '\n';
}
return 0;
}