Cod sursa(job #2365060)

Utilizator HaesteinnSabau Florin Vlad Haesteinn Data 4 martie 2019 11:55:44
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include<bits/stdc++.h>

using namespace std;
#define NMAX 250020
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m;
int s[NMAX][19];

int query(int x,int g)
{
    for(int i=0;(1<<i)<=g;i++)
        if(g&(1<<i))
            x=s[x][i];
    return x;
}

int main()
{
    fin.sync_with_stdio(0);
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        fin>>s[i][0];
    int lg2=32-__builtin_clz(n-1);
    cout<<lg2<<'\n';
    for(int j=1;j<lg2;j++)
        for(int i=1;i<=n;i++)
            s[i][j]=s[s[i][j-1]][j-1];
    for(int i=0;i<m;i++)
    {
        int q,g;
        fin>>q>>g;
        fout<<query(q,g)<<'\n';
    }
    return 0;
}