Cod sursa(job #2663818)

Utilizator NashikAndrei Feodorov Nashik Data 27 octombrie 2020 13:20:13
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int put[25],nex[250005][25],log[1100000];
int que(int nod,int p){
    if(p==0)
        return nod;
    return que(nex[nod][log[p]],p-put[log[p]]);
}
int main()
{
    int n,m,t,nod,p;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>t;
        nex[i][0]=t;
    }
    for(int j=1;j<=20;j++){
        for(int i=1;i<=n;i++){
            nex[i][j]=nex[nex[i][j-1]][j-1];
        }
    }
    put[0]=1;
    for(int i=1;i<=20;i++){
        put[i]=put[i-1]*2;
        log[put[i]]++;
    }
    for(int i=1;i<=1000000;i++){
        log[i]+=log[i-1];
    }
    for(int i=1;i<=m;i++){
        cin>>nod>>p;
        cout<<que(nod,p)<<"\n";
    }
    return 0;
}