Cod sursa(job #3310648)

Utilizator Andrei-Dani-10Pisla Andrei Daniel Andrei-Dani-10 Data 15 septembrie 2025 18:05:17
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

#include <vector>

using namespace std;

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

const int nmax = 250000, lgmax = 18;
int n, nrq, node, topp, dpfather[lgmax][nmax + 2];

int main(){

    in>>n>>nrq;
    for(int i = 1; i <= n; i++)
        in>>dpfather[0][i];

    for(int p = 1; (1 << p) <= n; p++){
        for(int i = 1; i <= n; i++)
            dpfather[p][i] = dpfather[p - 1][dpfather[p - 1][i]];
    }

    for(int i = 1; i <= nrq; i++){
        in>>node>>topp;

        for(int b = 0; (1 << b) <= topp; b++){
            if(topp & (1 << b))
                node = dpfather[b][node];
        }

        out<<node<<"\n";
    }

    return 0;
}