Pagini recente » Cod sursa (job #312352) | Cod sursa (job #2906223) | Cod sursa (job #3245951) | Cod sursa (job #3160318) | Cod sursa (job #3171815)
#include <bits/stdc++.h>
using namespace std;
const int dim=250005;
int n,a[dim],bl[20][dim],m;
void BinLif(){
for(int i=1;i<=n;i++){
bl[0][i]=a[i];
}
for(int k=1;(1<<k)<=n;k++){
for(int i=1;i<=n;i++){
bl[k][i]=bl[k-1][bl[k-1][i]];
}
}
}
int query(int p, int q){
int i=0,cq=q;
while(p){
if(p%2){
cq=bl[i][cq];
}
i++;
p/=2;
}
return cq;
}
int main(){
ifstream f("stramosi.in");
ofstream g("stramosi.out");
ios_base::sync_with_stdio(false);
f.tie(nullptr);
g.tie(nullptr);
f>>n>>m;
for(int i=1;i<=n;i++){
f>>a[i];
}
BinLif();
while(m--){
int p,q;
f>>q>>p;
g<<query(p,q)<<'\n';
}
return 0;
}