Pagini recente » Cod sursa (job #2760453) | Cod sursa (job #2767311) | Cod sursa (job #1158497) | Cod sursa (job #899282) | Cod sursa (job #1791969)
#include <cstdio>
using namespace std;
const int NMAX = 250000;
const int LOG = 18;
int rmq[LOG + 5][NMAX + 5];
int main(){
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
int n, m, i, j, p, q;
scanf("%d%d", &n, &m);
for(i = 1; i <= n; i ++)
scanf("%d", &rmq[0][i]);
for(j = 1; j <= 18; j ++)
for(i = 1; i <= n; i ++)
rmq[j][i] = rmq[j - 1][rmq[j - 1][i]];
for(i = 1; i <= m; i ++){
scanf("%d%d", &q, &p);
for(j = 18; j >= 0; j --)
if(p & (1 << j))
q = rmq[j][q];
printf("%d\n", q);
}
return 0;
}