Pagini recente » Cod sursa (job #2953810) | Cod sursa (job #2953813) | Cod sursa (job #2131935) | Cod sursa (job #493659) | Cod sursa (job #2915702)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, t[20][250005];
int lift(int x, int y) {
int nivel = 0;
while(y > 0) {
if(y & 1) {
x = t[nivel][x];
}
nivel++;
y >>= 1;
}
return x;
}
int main() {
fin >> n >> q;
for(int i = 1; i <= n; i++) {
fin >> t[0][i];
}
for(int i = 1; (1 << i) <= n; i++) {
for(int j = 1; j <= n; j++) {
t[i][j] = t[i - 1][t[i - 1][j]];
}
}
for(int i = 1; i <= q; i++) {
int x, y;
fin >> x >> y;
fout << lift(x, y) << "\n";
}
return 0;
}