Pagini recente » Cod sursa (job #144402) | Cod sursa (job #1647402) | Cod sursa (job #2866094) | Cod sursa (job #1928453) | Cod sursa (job #1375582)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
const int NMAX = 250000 + 1, LOGMAX = 18;
int n, q;
int d[LOGMAX][NMAX];
void citeste() {
f >> n >> q;
for (int i = 1; i <= n; i++) f >> d[0][i];
}
void precalculeaza() {
for (int i = 1; (1 << i) <= n; i++) {
for (int j = 1; j <= n; j++) {
d[i][j] = d[i - 1][d[i - 1][j]];
// cout << d[i][j] << ' ';
}
}
}
void rezolva() {
int a, b;
int k;
while (q--) {
f >> a >> b;
for (int i = 0; (1 << i) <= b; i++)
if (b & (1 << i)) a = d[i][a];
g << a << '\n';
}
}
int main() {
citeste();
precalculeaza();
rezolva();
}