Pagini recente » Cod sursa (job #2260130) | Cod sursa (job #3244154) | Cod sursa (job #788152) | Cod sursa (job #1040767) | Cod sursa (job #2968661)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("stramosi.in");
ofstream out("stramosi.out");
#define maxN 250000
#define maxPut 18
int v[maxN+1][maxPut+1];
int power[maxPut+1];
int main(){
int pow=1;
power[0]=1;
for(int i=1;i<=maxPut;i++){
pow<<=1;
power[i]=pow;
}
int n,q;
in>>n>>q;
for(int i=1;i<=n;i++){
in>>v[i][0];
}
int p=1,pos=1;
while(p<=n){
for(int i=1;i<=n;i++){
v[i][pos]=v[v[i][pos-1]][pos-1];
}
pos++;
p<<=1;
}
for(int z=1;z<=q;z++){
int a,b;
in>>a>>b;
int powi=maxPut;
while(b>0){
while(power[powi]>b){
powi--;
}
a=v[a][powi];
b-=power[powi];
}
out<<a<<'\n';
}
}