Pagini recente » Cod sursa (job #2459129) | Cod sursa (job #1829691) | Cod sursa (job #2904982) | Cod sursa (job #2266211) | Cod sursa (job #3133837)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int MAX_N = 250100;
const int MAX_LOG = 20;
int N, M;
int v[MAX_N];
int a[MAX_LOG][MAX_N];
int qry(int p, int q)
{
int x = p;
for (int i = 1; i <= MAX_LOG; i++)
{
if (q & (1 << (i - 1)))
{
x = a[i][x];
}
}
return x;
}
void gen()
{
for (int i = 1; i <= N; i++)
a[1][i] = v[i];
for (int i = 2; (1 << (i - 1)) <= N; i++)
{
for (int j = 1; j <= N; j++)
{
a[i][j] = a[i - 1][a[i - 1][j]];
}
}
}
int main()
{
fin >> N >> M;
for (int i = 1; i <= N; i++)
fin >> v[i];
gen();
for (int i = 1; i <= M; i++)
{
int p, q;
fin >> p >> q;
fout << qry(p, q) << '\n';
}
return 0;
}