Cod sursa(job #3360345)

Utilizator florinul1Iuhas Florin florinul1 Data 12 iulie 2026 18:46:41
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <fstream>

using namespace std;

const int N=25e4+4,M=20;
int t[N];
int n,q;
int stramos[N][M];

void calc_stramos()
{
    for(int i(1); i<=n; i++)
        stramos[i][0]=t[i];
    for(int p(1); p<M; p++)
        for(int i(1); i<=n; i++)
            stramos[i][p]=stramos[stramos[i][p-1]][p-1];
}

int get_stramos(int nod,int al_catelea)
{
    for(int p(0); p<M; p++)
        if(al_catelea&(1<<p))
            nod=stramos[nod][p];
    return nod;
}

int main()
{
    ifstream fin("stramosi.in");
    ofstream fout("stramosi.out");
    fin>>n>>q;
    int i,j;
    for(i=1; i<=n; i++)fin>>t[i];
    calc_stramos();
    while(q--)
    {
        fin>>i>>j;
        fout<<get_stramos(i,j)<<'\n';
    }
    return 0;
}