Cod sursa(job #2627360)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 10 iunie 2020 15:26:19
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

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

const int nmax = 250000;

int n, m, dp[nmax + 5][19];

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= n; ++i)
    {
        fin >> dp[i][0];
    }
    for (int j = 1; j <= 18; ++j)
    {
        for (int i = 1; i <= n; ++i)
        {
            dp[i][j] = dp[dp[i][j - 1]][j - 1];
        }
    }
    for (int i = 1; i <= m; ++i)
    {
        int p, q;
        fin >> q >> p;
        int stramos = q, c = 0;
        while (p > 0)
        {
            if (p & 1 == 1)
            {
                stramos = dp[stramos][c];
            }
            p >>= 1;
            ++c;
        }
        fout << stramos << "\n";
    }
    fin.close();
    fout.close();
    return 0;
}