Cod sursa(job #2363670)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 3 martie 2019 14:50:50
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int str[250005],dp[250005][18];
int N,M,Q,P,p,nr;
int main(){

    cin>>N>>M;

    for(int i=1;i<=N;i++)
        cin>>str[i];

    for(int i=1;i<=N;i++)
        dp[i][0]=str[i];

        for(int i=1;i<=N;i++)
            for(int k=1;k<=17;k++)
                if(dp[i][k-1] && (1<<k)<=N)
                    dp[i][k]=dp[dp[i][k-1]][k-1];
                else break;

    for(int i=1;i<=M;i++){

        cin>>Q>>P;

        for(p=1,nr=0;p<=P;p<<=1,++nr)
            if(P&p)
                Q=dp[Q][nr];

        cout<<Q<<'\n';

    }

}