Pagini recente » Cod sursa (job #3360230) | Cod sursa (job #3360131) | Cod sursa (job #3360194) | Cod sursa (job #3360236) | Cod sursa (job #3360157)
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
#include <list>
#include <random>
#include <fstream>
using namespace std;
const int N = 25e4+1;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
#define cin in
#define cout out
int up[20][N], parinte[N];
int n, m;
int main() {
cin >> n >> m;
for (int i = 1,x; i <= n; i++)
{
cin >> x;
parinte[i] = x;
}
for (int i = 1; i <= n; i++)
{
up[0][i] = parinte[i];
}
for (int k = 1; k < 20; k++)
{
for (int i = 1; i <= n; i++)
{
up[k][i] = up[k - 1][up[k - 1][i]];
}
}
for (int i = 1; i <= m; i++)
{
int q,p;
cin >> q >> p;
for (int k = 0; k < 20; k++)
{
if (p & (1 << k))
q = up[k][q];
}
cout << q << '\n';
}
}