Pagini recente » Cod sursa (job #2179013) | Cod sursa (job #14017) | Cod sursa (job #564542) | Cod sursa (job #3225214) | Cod sursa (job #1848023)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int a[20][250001], v[250001];
int stramos(int x, int p) {
int aux = x;
for (int i=0; (1<<i) <= p; i++) {
if((1<<i)&p) {
aux = a[i][aux];
}
}
return aux;
}
int main() {
int N, M;
in>>N>>M;
for (int i=1; i<= N; i++) {
in>>v[i];
}
for(int i=1; i<=N; i++) {
a[0][i] = v[i];
}
for (int k=1; k<=18; k++) {
for (int i=1; i<=N; i++) {
a[k][i] = a[k-1][a[k-1][i]];
}
}
int s, p;
for (int k=1; k<=M; k++) {
in>>s>>p;
out<<stramos(s,p)<<endl;
}
// for (int i=0; i<=N; i++) {
// for (int j=1; j<=N; j++) {
// cout<<a[i][j]<<" ";
// }
// cout<<endl;
// }
return 0;
}