Cod sursa(job #2085082)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 9 decembrie 2017 17:56:39
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>

using namespace std;
ifstream fi("stramosi.in");
ofstream fo("stramosi.out");
const int nmax=250005;
int n,m,p[nmax],dp[20][nmax],a,b;
int query(int i,int nivel)
{
    if(nivel>n)
        return 0;
    if(nivel==0)
        return i;
    int k=0;
    while((1<<(k+1))<=nivel)
        k++;
    return query(dp[k][i],nivel-(1<<k));

}
int main()
{
    fi>>n>>m;
    for(int i=1;i<=n;i++)
        fi>>dp[0][i];

    for(int j=1;(1<<j)<=n;j++)
        for(int i=1;i<=n;i++)
            dp[j][i]=dp[j-1][dp[j-1][i]];

    for(int i=1;i<=m;i++)
    {
        fi>>a>>b;
        fo<<query(a,b)<<"\n";
    }
    fi.close();
    fo.close();
    return 0;
}