Cod sursa(job #1851415)

Utilizator saba_alexSabadus Alex saba_alex Data 19 ianuarie 2017 18:48:07
Problema Stramosi Scor 100
Compilator cpp Status done
Runda gym_emag_avansati_2016 Marime 0.62 kb
#include <iostream>
#include <fstream>
#define MAX 250005
using namespace std;

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

int n,m,dp[20][MAX],a,b;

void build(){
    for(int i=1;i<=n;++i)
        fin>>dp[0][i];
    for(int k=1;k<=18;++k)
        for(int i=1;i<=n;++i)
            dp[k][i]=dp[k-1][dp[k-1][i]];
}

int query(int k, int nod){
    for(int i=0;(1<<i)<=k;i++)
        if(k&(1<<i))
            nod=dp[i][nod];
    return nod;
}

int main()
{
    fin>>n>>m;
    build();
    for(int i=1;i<=m;++i){
        fin>>a>>b;
        fout<<query(b,a)<<'\n';
    }
    return 0;
}