Pagini recente » Cod sursa (job #1500432) | Cod sursa (job #1479943) | Cod sursa (job #1436635) | Cod sursa (job #2969898) | Cod sursa (job #3133591)
#include <fstream>
#include <cmath>
using namespace std;
int n, m, q, p;
int DP[20][250005];
int stramos(int q, int p) {
int i = 0;
while (p != 0) {
if (p % 2 != 0)
q = DP[i][q];
p = (p >> 1);
i++;
}
return q;
}
int main()
{
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
fin >> n >> m;
for (int i = 1; i <= n; i++)
fin >> DP[0][i];
int length = static_cast<int>(log2(n));
for (int i = 1; i <= length; i++)
for (int j = 1; j <= n; j++)
DP[i][j] = DP[i - 1][DP[i - 1][j]];
for (int i = 1; i <= m; i++) {
fin >> q >> p;
fout << stramos(q, p) << '\n';
}
return 0;
}