Pagini recente » Cod sursa (job #1916740) | Cod sursa (job #3306087) | Cod sursa (job #475884) | Cod sursa (job #3353885) | Cod sursa (job #3338028)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int dp[250002][22],n,q,vecpow[22];
int main()
{
fin>>n>>q;
for(int i=1;i<=n;i++)
fin>>dp[i][1];
vecpow[1]=1;
int pow=2,index=2;
while(pow<=n){
vecpow[index]=pow;
for(int i=1;i<=n;i++)
dp[i][index]=dp[dp[i][index-1]][index-1];
pow*=2,index++;
}
index--;
while(q-->0){
int st,lenfull,dif;fin>>st>>lenfull;int valras=st;
while(lenfull && valras){
int gogo=(1+index)/2;
while(vecpow[gogo]<=lenfull && gogo<index)gogo++;
while(vecpow[gogo]>lenfull && gogo>1)gogo--;
valras=dp[valras][gogo];
lenfull-=vecpow[gogo];
}
fout<<valras<<'\n';
}
return 0;
}