Cod sursa(job #3276851)

Utilizator EricDimiericdc EricDimi Data 14 februarie 2025 21:26:42
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAX_N = 250'000;
const int LOG_MAX = 18;

int d[LOG_MAX + 1][MAX_N + 1];
/// d[i][j] - stramosul al 2^i-lea al nodului j
int N, M, nod, s;

int main()
{
    f >> N >> M;
    for (int i = 1; i <= N; i++)
        f >> d[0][i];
    for (int i = 1; i < LOG_MAX; i++)
        for (int j = 1; j <= N; j++)
            d[i][j] = d[i - 1][d[i - 1][j]];
    while (M--)
    {
        f >> nod >> s;
        for (int bit = 0; bit < LOG_MAX; bit++)
            if (s & (1 << bit))
                nod = d[bit][nod];
        g << nod << '\n';
    }
    f.close();
    g.close();
    return 0;
}