Cod sursa(job #3231712)

Utilizator bravo_tiramisutiramisu bravo_tiramisu Data 27 mai 2024 16:36:22
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;

const int DMAX = 250003;
int D[19][DMAX], l2[DMAX];

int main () {

    ifstream inFile("stramosi.in");
    ofstream outFile("stramosi.out");
    int N, M, i, j, x, y;
    inFile >> N >> M;

    for (i = 1; i <= N; ++i) {
        inFile >> D[0][i];
        l2[i + 1] = l2[(i + 1) >> 1] + 1;
    }

    for (i = 1; (1 << i) <= N; ++i)
        for (j = 1; j <= N; ++j)
            D[i][j] = D[i - 1][D[i - 1][j]];

    while (M--) {
        inFile >> x >> y;
        while (y) {
            x = D[l2[y]][x];
            y -= 1 << l2[y];
        }
        outFile << x << "\n";
    }

    inFile.close();
    outFile.close();
    return 0;
}