Pagini recente » Cod sursa (job #799032) | Cod sursa (job #2206554) | Cod sursa (job #819408) | Cod sursa (job #2864329) | Cod sursa (job #3305362)
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
const int nmax = 250005;
int a[nmax], n, m, rmq[18][nmax], e[nmax];
int main(){
f >> n >> m;
for(int i = 1; i <= n; i++){
f >> a[i];
rmq[0][i] = a[i];
}
for(int p = 1; p <= 18; p++){
for(int i = 1; i <= n; i++){
rmq[p][i] = rmq[p - 1][rmq[p - 1][i]];
}
}
e[1] = 0;
for(int i = 2; i <= n; i++){
e[i] = 1 + e[i / 2];
}
while(m--){
int node, p;
f >> node >> p;
while(p > 0){
node = rmq[e[p]][node];
p -= (1 << e[p]);
}
g << node << '\n';
}
}