Pagini recente » Cod sursa (job #2526528) | Cod sursa (job #385897) | Cod sursa (job #435722) | Cod sursa (job #2151347) | Cod sursa (job #2700481)
//ALEXANDRU MICLEA
#include <vector>
#include <algorithm>
#include <string>
#include <string.h>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>
#include <assert.h>
#include <iostream>
using namespace std;
using ll = long long;
#define fast_cin() ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
//VARIABLES
int LOG[250005];
int dp[25][250005];
//FUNCTIONS
//MAIN
int main() {
#ifdef INFOARENA
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
#endif
fast_cin();
int n, m; cin >> n >> m;
for (int i = 2; i <= n; i++) LOG[i] = LOG[i / 2] + 1;
for (int i = 1; i <= n; i++) cin >> dp[0][i];
for (int p = 1; p < LOG[n]; p++) {
for (int i = 1; i <= n; i++) {
dp[p][i] = dp[p - 1][dp[p - 1][i]];
}
}
for (int i = 1; i <= m; i++) {
int nod, rang; cin >> nod >> rang;
while (rang) {
nod = dp[LOG[rang]][nod];
rang -= (1 << LOG[rang]);
}
cout << nod << '\n';
}
return 0;
}