Cod sursa(job #2837406)

Utilizator VladPislaruPislaru Vlad Rares VladPislaru Data 22 ianuarie 2022 10:28:35
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

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

/**


d[i][j] = stramosul lui j aflat la distanta 2^i

*/


int n, Q;
int d[19][250005];

int main()
{
    int i, j;
    fin >> n >> Q;
    for (int i = 1; i <= n; i++)
        fin >> d[0][i]; /// stramosul aflat la distanta 1 fata
                    /// de i este chiar tatal lui i
    for (i = 1; i <= 18; i++)
        for (j = 1; j <= n; j++)
            d[i][j] = d[i - 1][d[i - 1][j]];
    while (Q--)
    {
        int nod ,dist;
        fin >> nod >> dist;
        int expo = 0;
        while (dist > 0)
        {
            if (dist % 2 == 1)
                nod = d[expo][nod];
            expo++;
            dist /= 2;
        }
        fout << nod << "\n";
    }
    return 0;
}