Pagini recente » Clasamentul arhivei de probleme | Clasamentul arhivei de probleme | Borderou de evaluare (job #2009675) | Cod sursa (job #454210) | Cod sursa (job #2713903)
#include <bits/stdc++.h>
#define nlim 250005
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n, m, q, p, v[20][nlim], l;
int stramos(int x, int y) {
for (int i = 20; i >= 0; --i)
if ((1 << i) & y) x = v[i][x];
return x;
}
int main()
{
f >> n >> m;
l = ceil(log2(n));
for (int i = 1; i <= n; ++i)
f >> v[0][i];
for (int j = 1; j <= l; ++j)
for (int i = 1; i <= n; ++i)
v[j][i] = v[j - 1][v[j - 1][i]];
while (m--) {
f >> q >> p;
g << stramos(q, p) << '\n';
}
}