Cod sursa(job #2140337)

Utilizator MarinPeptenaruMarin Vasile Peptenaru MarinPeptenaru Data 23 februarie 2018 11:49:47
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
const int nx=250002;
int dp[20][nx],n,lg[nx],q,
x,k;
int query (int x, int k)
{
    if(k==0 || x==0) return x;
    else return query (dp[lg[k]][x],k-(1<<lg[k]));
}
int main()
{
    in>>n>>q;
    for(int i=1; i<=n; i++)
    {
        in>>dp[0][i];
        if(i>=2)
            lg[i]=lg[i/2]+1;
    }
    for(int i=1; (1<<i)<=n; i++)
        for(int j=1; j<=n; j++)
            dp[i][j]=dp[i-1][dp[i-1][j]];
    for(;q;q--)
    {
        in>>x>>k;
        out<<query(x,k)<<'\n';
    }
    return 0;
}