Pagini recente » Cod sursa (job #731532) | Cod sursa (job #2742515) | Cod sursa (job #2085460) | Cod sursa (job #1320519) | Cod sursa (job #2087811)
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int dp[20][250100];
int LOG[250100];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> dp[1][i];
}
for (int i=2; i<=n; i++){
LOG[i] = LOG[i/2] + 1;
}
for (int bit = 2; bit <= LOG[n] + 1; bit++) {
for (int i = 1; i <= n; i++) {
dp[bit][i] = dp[bit - 1][dp[bit-1][i]];
}
}
for (int i = 1; i <= m; i++) {
int nr, pos;
cin >> nr >> pos;
while (pos){
nr = dp[LOG[pos] + 1][nr];
pos -= (1 << LOG[pos]);
}
cout << nr << '\n';
}
return 0;
}