Pagini recente » Cod sursa (job #1971356) | Diferente pentru warm-up-2019/solutii/shoturi intre reviziile 96 si 97 | Cod sursa (job #207637) | Diferente pentru home intre reviziile 760 si 761 | Cod sursa (job #2153640)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 250001;
int stram[19][NMAX];
int main() {
ifstream in("stramosi.in");
ofstream ou("stramosi.out");
int n, m, q, p;
in >> n >> m;
for(int i = 1; i <= n; ++i) {
in >> stram[0][i];
}
for(int i = 1; i <= 18; ++i) {
for(int j = 1; j <= n; ++j) {
stram[i][j] = stram[i - 1][stram[i - 1][j]];
}
}
for(int nrq = 0; nrq < m; ++nrq) {
in >> q >> p;
for(int pp = 0; p > 0; p >>= 1, ++pp) {
if(p & 1) {
q = stram[pp][q];
}
}
ou << q << '\n';
}
return 0;
}