Pagini recente » Cod sursa (job #2368990) | Cod sursa (job #2967041) | Cod sursa (job #1816853) | Cod sursa (job #2891071) | Cod sursa (job #2632656)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define cin fin
#define cout fout
#define endl "\n"
#define ll long long
int n, m;
int rmq[18][100002];
int logaritmi[100002];
void init() {
logaritmi[1] = 0;
for(int i=2; i <= n; i++) {
logaritmi[i] = logaritmi[i / 2] + 1;
}
for(int lungime = 1; (1 << lungime) <= n; lungime++) {
for(int el = 1; el <= n; el++) {
rmq[lungime][el] = rmq[lungime-1][rmq[lungime-1][el]];
}
}
}
void solve() {
cin >> n >> m;
for(int i=1; i <= n; i++) {
cin >> rmq[0][i];
}
init();
while(m--) {
int a, b;
cin >> a >> b;
if(b == 0) {
cout << a << endl;
} else {
while(b > 0) {
a = rmq[logaritmi[b & (-b)]][a];
b -= b & (-b);
}
cout << a << endl;
}
}
}
int main() {
ios_base::sync_with_stdio(0);
cin .tie(0);
cout.tie(0);
int testCases = 1;
//cin >> testCases;
while(testCases--) {
solve();
}
}