Pagini recente » Cod sursa (job #52393) | Cod sursa (job #255651) | Cod sursa (job #429850) | Cod sursa (job #2370195) | Cod sursa (job #3231850)
#include <iostream>
#include <fstream>
#include <vector>
int dp[25][250025];
int main() {
std::ifstream input("stramosi.in");
std::ofstream output("stramosi.out");
int N, M;
input >> N >> M;
for (int i = 1; i <= N; ++i)
input >> dp[0][i];
for (int i = 1; i <= 19; ++i)
for (int j = 1; j <= N; ++j)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
for (int i = 1; i <= M; ++i) {
int p, q;
input >> p >> q;
while (q) {
int power = 0;
while ((1 << power) <= q) power++;
power--;
q -= (1 << power);
p = dp[power][p];
}
output << p << '\n';
}
input.close();
output.close();
return 0;
}