Cod sursa(job #3171359)
Utilizator | Data | 18 noiembrie 2023 19:15:35 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include <iostream>
using namespace std;
int n, m;
int dp[18][250001];
int main(){
cin >> n >> m;
for(int i=1; i<=n; ++i)
cin >> dp[0][i];
for(int i=1; (1 << i) <= n; ++i)
for(int j=1; j <= n; ++j)
dp[i][j] = dp[i-1][dp[i-1][j]];
int q, p;
while(m--) {
cin >> q >> p;
for(int i=0; p; ++i) {
if(p & 1)
q = dp[i][q];
p >>= 1;
}
cout << q << '\n';
}
return 0;
}