Pagini recente » Borderou de evaluare (job #1504865) | Borderou de evaluare (job #2633350) | Cod sursa (job #1232617) | Cod sursa (job #2617366)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, dp[19][250010], q, p, r, rez;
int main() {
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i++)
scanf("%d", &dp[0][i]);
for(int j = 1; j <= 18; j++)
for(int i = 1; i <= n; i++)
dp[j][i] = dp[j - 1][dp[j - 1][i]];
for(int i = 1; i <= m; i++) {
scanf("%d%d", &q, &p);
r = 0;
rez = q;
while(p != 0) {
if(p % 2 != 0)
rez = dp[r][rez];
p = p >> 1;
r++;
}
printf("%d\n", rez);
}
}