Pagini recente » Cod sursa (job #1011151) | Cod sursa (job #1610694) | Cod sursa (job #1899584) | Cod sursa (job #2791046) | Cod sursa (job #3235847)
#include <iostream>
#include <cmath>
#include <bitset>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int A[250001][17], N, M, B[250001];
int main()
{
fin >> N >> M;
int Log = (int) log2(N);
for (int i = 1; i <= N; i++)
fin >> 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;
fin >> Q >> P;
bitset < 17 > BP(P);
for (int j = 0; j < 17; j++)
if (BP[j] == 1)
Q = A[Q][j];
fout << Q << "\n";
}
return 0;
}