Pagini recente » Cod sursa (job #2490433) | Cod sursa (job #39534) | Cod sursa (job #1637670) | Cod sursa (job #151761) | Cod sursa (job #3224176)
#include <bits/stdc++.h>
using namespace std;
const int Nmax=25e4+5;
int N, tata[Nmax], dp[Nmax][25];
inline void RMQ(){
int i,j;
for(i=1;i<=N;++i)
dp[i][0]=tata[i];
for(i=1;i<=N;++i)
for(j=1;j<=20;++j)
dp[i][j]=dp[dp[i][j-1]][j-1];}
int main(){
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int M, x, y, i, p;
fin >> N >> M;
for(i=1;i<=N;++i) fin >> tata[i];
RMQ();
while(M--){
fin >> x >> y;
while(y){
p=floor(log2(y));
x=dp[x][p];
y-=pow(2,p);}
fout << x << "\n";}
return 0;
}