Cod sursa(job #2837414)

Utilizator Madalin_IonutFocsa Ionut-Madalin Madalin_Ionut Data 22 ianuarie 2022 10:30:17
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;

/**
d[i][j] = stramosul lui j aflat la distanta 2^i de j
*/
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, Q;
int d[19][250003];

int main()
{
    int i, j, nod, k, sol;
    fin >> n >> Q;
    for (i = 1; i <= n; i++)
        fin >> d[0][i];
    /// constructie d:
    for (i = 1; i <= 18; i++)
        for (j = 1; j <= n; j++)
            d[i][j] = d[i - 1][d[i - 1][j]];
    /// interogarile
    for (i = 1; i <= Q; i++)
    {
        fin >> nod >> k;
        sol = 0;
        while (k > 0)
        {
            if (k % 2 == 1) nod = d[sol][nod];
            sol++;
            k /= 2;
        }
        fout << nod << "\n";
    }
    fout.close();
    return 0;
}