Pagini recente » Monitorul de evaluare | Borderou de evaluare (job #2976760) | Borderou de evaluare (job #3184837) | Cod sursa (job #3329367) | Cod sursa (job #3323116)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, i, p, niv[250002], tata[19][250002];
int main() {
//ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> n >> q;
for(i = 1; i <= n; i++) fin >> tata[0][i];
for(p = 1; p <= 18; p++) {
for(i = 1; i <= n; i++) {
tata[p][i] = tata[p - 1][tata[p - 1][i]];
}
}
while(q--) {
int q, p;
fin >> q >> p;
for(i = 18; i >= 0; i--) {
if(p >> i & 1) q = tata[i][q];
}
fout << q << "\n";
}
return 0;
}