Cod sursa(job #2291123)

Utilizator MateiTrandafirMatei Trandafir MateiTrandafir Data 27 noiembrie 2018 17:31:13
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;
}