Cod sursa(job #2363616)
Utilizator | Data | 3 martie 2019 14:02:13 | |
---|---|---|---|
Problema | Stramosi | Scor | 80 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.57 kb |
#include<fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int str[250005],dp[250005][25];
int N,M,Q,P,p,nr;
int main(){
cin>>N>>M;
for(int i=1;i<=N;i++)
cin>>str[i];
for(int i=1;i<=N;i++)
dp[i][0]=str[i];
for(int k=1;k<=20;k++)
for(int i=1;i<=N;i++)
dp[i][k]=dp[dp[i][k-1]][k-1];
for(int i=1;i<=M;i++){
cin>>Q>>P;
for(p=1,nr=0;p<=P;p<<=1,++nr)
if(P&p)
Q=dp[Q][nr];
cout<<Q<<'\n';
}
}