Cod sursa(job #3301715)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 29 iunie 2025 12:40:40
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

ifstream fi("stramosi.in");
ofstream fo("stramosi.out");


const int logmax = 17;

int P[250001];
int Dp[18][250001];

int main() {
    int N, M;
    fi >> N >> M;
    for (int i = 1; i <= N; i++) {
        fi >> P[i];
        Dp[0][i] = P[i];
    }

    for (int l = 1; l <= logmax; l++) {
        for (int i = 1; i <= N; i++) {
            Dp[l][i] = Dp[l - 1][Dp[l - 1][i]];
        }
    }

    for (int i = 1; i <= M; i++) {
        int q, p;
        fi >> q >> p;

        int cr = q;
        for (int p2 = logmax; p2 >= 0; p2--) {
            if ((1 << p2) <= p) {
                p -= (1 << p2);
                cr = Dp[p2][cr];
            }
        }

        fo << cr << "\n";
    }
}