Pagini recente » Cod sursa (job #22502) | Cod sursa (job #1316630) | Cod sursa (job #2486555) | Cod sursa (job #1804039) | Cod sursa (job #2212696)
#include <fstream>
using namespace std;
ifstream cin ("stramosi.in");
ofstream cout ("stramosi.out");
const int LMAX = 18;
const int NMAX = 250000;
int n, q;
int x, y;
int dp[1 + LMAX][1 + NMAX];
int main() {
cin >> n >> q;
for(int i = 1; i <= n; i++)
cin >> dp[0][i];
for(int i = 1; i <= LMAX; i++) {
for(int j = 1; j <= n; j++)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
}
for(int i = 1; i <= q; i++) {
cin >> x >> y;
int p = LMAX;
while(y) {
if(y & (1 << p)) {
x = dp[p][x];
y -= (1 << p);
}
p--;
}
cout << x << "\n";
}
return 0;
}