Cod sursa(job #3232337)

Utilizator albuAlbu Victor albu Data 29 mai 2024 23:42:54
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;

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

int main()
{
    long long n, m, i, j, q, p;
    fin >> n >> m;
    int log_n = log2(n);
    vector<vector<long long>> stramosi(log_n + 1, vector<long long>(n + 1, 0));
    vector<long long> v(n + 1);
    v[0] = 0;
    for(i = 1; i <= n; ++i)
    {
        fin >> stramosi[0][i];
        v[i] = v[stramosi[0][i]] + 1;
    }
    for(i = 1; i <= log_n; ++i)
        for(j = 1; j <= n; ++j)
            stramosi[i][j] = stramosi[i - 1][stramosi[i - 1][j]];
    for(i = 0; i < m; ++i)
    {
        fin >> q >> p;
        if(p >= v[q])
        {
            fout << "0\n";
        }
        else
        {
            long long exp = 0;
            while(p)
            {
                if(p & 1)
                    q = stramosi[exp][q];
                ++exp;
                p >>= 1;
            }
            fout << q << '\n';
        }
    }
    return 0;
}