Cod sursa(job #2363700)

Utilizator HaesteinnSabau Florin Vlad Haesteinn Data 3 martie 2019 15:23:51
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<bits/stdc++.h>

using namespace std;
#define NMAX 250000
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m;
int s[NMAX][20];

int query(int x,int g)
{
    int nr=0;
    int ans=x;
    while(g)
    {
        if(g&(1<<nr))
        {
            g-=(1<<nr);
            ans=s[ans][nr];
        }
        nr++;
    }
    return ans;
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        fin>>s[i][0];
    }
    int lg2=32-__builtin_clz(n);
    for(int j=1;j<lg2;j++)
        for(int i=1;i<=n;i++)
            s[i][j]=s[s[i][j-1]][j-1];
    for(int i=0;i<m;i++)
    {
        int q,g;
        fin>>q>>g;
        fout<<query(q,g)<<'\n';
    }
    return 0;
}