Cod sursa(job #1791955)

Utilizator GeanaVladGeana Vlad GeanaVlad Data 29 octombrie 2016 21:23:32
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include<fstream>
#include<math.h>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,q,i,v[250001],p,k,r[250001][20],p2,j;
inline void BuildRMQ()
{
    int m=log2(n)+1,i,j;
    for(j=1; j<m; j++)
        for(i=1; i<=n; i++)
            r[i][j]=r[r[i][j-1]][j-1];
}
int main()
{
    f>>n>>q;
    for(i=1; i<=n; i++)
        f>>r[i][0];
    BuildRMQ();
    for(; q; q--)
    {
        f>>p>>k;//al k lea stramos al lui p
        while(p && k)
        {
            p2=1;
            for(j=0;p2*2<=k;j++)
                p2*=2;
            p=r[p][j];
            k-=p2;
        }
        g<<p<<'\n';
    }
}