Cod sursa(job #2085078)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 9 decembrie 2017 17:51:02
Problema Stramosi Scor 90
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[nmax][20],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[i][k],nivel-(1<<k));

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

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

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