Cod sursa(job #2413937)

Utilizator 12222Fendt 1000 Vario 12222 Data 23 aprilie 2019 20:54:15
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

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

const int Nmax=250002;
int n,m;
int dp[20][Nmax],puteri[20],lg[Nmax];

void Build()
{

    for(int i=2;i<Nmax;i++)
        lg[i]=lg[i/2]+1;

    puteri[0]=1;
    for(int i=1;i<=18;i++)
        puteri[i]=2*puteri[i-1];
}

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

    Build();

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

    int x,y,sol;
    while(m--)
    {
        fin>>x>>y;

        sol=x;

        while(y)
        {
            x=lg[y];
            sol=dp[sol][x];
            y-=puteri[x];
        }

        fout<<sol<<"\n";
    }
    return 0;
}