Cod sursa(job #2291132)
Utilizator | Matei Trandafir MateiTrandafir | Data | 27 noiembrie 2018 17:46:43 |
---|---|---|---|
Problema | Stramosi | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <fstream>
int d[250001][18];
int main() {
std::ifstream in("stramosi.in");
std::ofstream out("stramosi.out");
int i, j, k, x, y, n, m;
in >> n >> m;
for (i = 1; i <= n; ++i) in >> d[i][0];
for (j = 0; j <= 16; ++j) for (i = 1; i <= n; ++i) d[i][j + 1] = d[d[i][j]][j];
for (i = 0; i < m; ++i) {
in >> x >> y;
j = 1u << 17u;
k = 17;
while (j != 0) {
if (j <= y) {
y -= j;
x = d[x][k];
}
--k;
j >>= 1;
}
out << x << '\n';
}
return 0;
}