Cod sursa(job #2070586)

Utilizator abccnuCamelia Zalum abccnu Data 19 noiembrie 2017 18:22:58
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n,m,dp[250005][21],puteri[25];

inline void Citire()
{
    int i,j;
    fin>>n>>m;
    for (i=1;i<=n;i++)
        fin>>dp[i][0];
    puteri[0]=1;
    for (j=1;j<=20;j++)
        puteri[j]=puteri[j-1]<<1;
    for (i=1;i<=n;i++)
        for (j=1;puteri[j]<=n;j++)
            dp[i][j]=dp[dp[i][j-1]][j-1];
}

inline void DP()
{
    int i,Q,p;
    while (m--)
        {
           fin>>Q>>p;
           while (Q && p)
            {
                for (i=0;puteri[i]<=p;i++); i--;
                Q=dp[Q][i];
                p-=puteri[i];
            }
           fout<<Q<<"\n";
        }
}

int main()
{
    Citire();
    DP();
    return 0;
}