Pagini recente » Cod sursa (job #2163205) | Cod sursa (job #2347048) | Cod sursa (job #872143) | Cod sursa (job #486370) | Cod sursa (job #3235844)
#include <iostream>
#include <cmath>
#include <bitset>
using namespace std;
int A[250001][17], N, M, B[250001];
int main()
{
cin >> N >> M;
int Log = (int) log2(N);
for (int i = 1; i <= N; i++)
cin >> B[i];
for (int i = 1; i <= N; i++)
A[i][0] = B[i];
for (int j = 1; j <= Log; j++)
for (int i = 1; i <= N; i++)
A[i][j] = A[A[i][j - 1]][j - 1];
/*for (int i = 1; i <= N; i++, cout << "\n")
for (int j = 0; j <= Log; j++)
cout << A[i][j] << " ";*/
for (int i = 1; i <= M; i++)
{
int P, Q;
cin >> Q >> P;
bitset < 17 > BP(P);
for (int j = 0; j < 17; j++)
if (BP[j] == 1)
Q = A[Q][j];
cout << Q << "\n";
}
return 0;
}