Pagini recente » Cod sursa (job #2106152) | Cod sursa (job #1553057) | Cod sursa (job #1682530) | Cod sursa (job #1369104) | Cod sursa (job #1492183)
#include <iostream>
#include <fstream>
#define MAXN 250000
#define LG 19
using namespace std;
int dad[MAXN + 1], stram[LG][MAXN + 1];
int main () {
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n, m;
cin >> n >> m;
for (int i = 1 ; i <= n ; ++i)
cin >> stram[0][i];
int logn = 0, put = 1;
while (put <= n) {
put *= 2;
++logn;
}
--logn;
for (int j = 1 ; j <= logn ; ++j)
for (int i = 1 ; i <= n ; ++i)
stram[j][i] = stram[j - 1][stram[j - 1][i]];
for (int i = 0 ; i < m ; ++i) {
int q, p;
cin >> q >> p;
for (int j = 0 ; p ; p >>= 1, ++j)
if (p & 1)
q = stram[j][q];
cout << q << "\n";
}
return 0;
}