Cod sursa(job #3294695)

Utilizator Floroiu_MariusFloroiu Marius Cristian Floroiu_Marius Data 27 aprilie 2025 14:32:52
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,q;
int tata[250003][19];
int main()
{
    fin>>n>>q;
    for (int i=1;i<=n;i++)
    {
        int x;
        fin>>x;
        tata[i][0]=x;
        for (int j=1;j<=18;j++)
        {
            tata[i][j]=tata[tata[i][j-1]][j-1];
            if (tata[i][j]==0) break;
        }
    }
    while (q--)
    {
        int cnt,nod;
        fin>>nod>>cnt;
        for (int i=18;i>=0;i--)
        {
            int masca=(1<<i);
            if (cnt&masca)
            {
                nod=tata[nod][i];
                cnt-=masca;
            }
            if (nod==0) break;
        }
        fout<<nod<<'\n';
    }
    return 0;
}