Pagini recente » Monitorul de evaluare | Diferente pentru sandbox intre reviziile 93 si 578 | Diferente pentru problema/lacuri intre reviziile 4 si 3 | Diferente pentru problema/copacsmenar intre reviziile 13 si 18 | Cod sursa (job #2958964)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, d[20][250003];
int main()
{
int i, j, x, p;
fin >> n >> q;
for (i = 1; i <= n; i++)
fin >> d[0][i];
for (i = 1; i <= 18; i++)
for (j = 1; j <= n; j++)
d[i][j] = d[i - 1][d[i - 1][j]];
while (q--)
{
fin >> x >> p;
i = 0;
while (p > 0)
{
if (p % 2 == 1)
x = d[i][x];
i++;
p /= 2;
}
fout << x << "\n";
}
return 0;
}