Cod sursa(job #3224176)
Utilizator | Stoica Victor Toni07 | Data | 14 aprilie 2024 21:02:20 |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#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;
}