Cod sursa(job #2708225)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 18 februarie 2021 13:52:56
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, nod, b, tata[25][250005];

int main() {
    fin >> n >> q;
    for (int i = 1; i <= n; ++i)
        fin >> tata[0][i];
    for (int j = 1; j <= 20; ++j)
        for (int i = 1; i <= n; ++i)
            tata[j][i] = tata[j - 1][tata[j - 1][i]];
    while (q--) {
        fin >> nod >> b;
        for (int i = 20; i >= 0; --i)
            if ((1 << i) <= b)
                nod = tata[i][nod], b -= (1 << i);
        fout << nod << "\n";
    }
    return 0;
}