Cod sursa(job #2409850)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 19 aprilie 2019 14:30:57
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>
#define Dim 250005
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int N,M,a,rmq[19][Dim],lev,nod;

int main()
{
    f>>N>>M;
    for(int i=1;i<=N;i++)
    {
        f>>a;
        rmq[0][i]=a;
    }
    for(int i=1;(1<<i)<=N;i++)
    for(int j=1;j<=N;j++)
    rmq[i][j]=rmq[i-1][rmq[i-1][j]];

    for(int i=1;i<=M;i++)
    {
        f>>nod>>lev;
        int org=lev;
        while(lev)
        {
            lev&=lev-1;
            int dif=log2(org-lev);
            nod=rmq[dif][nod];
            org=lev;
        }
        g<<nod<<'\n';
    }
    return 0;
}