Pagini recente » Cod sursa (job #2078478) | Cod sursa (job #2352159) | Cod sursa (job #215087) | Monitorul de evaluare | Cod sursa (job #1787893)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define nmax 250100
int rmq[20][nmax];
int n,q,i,j,x,nr,k;
int compute(int x,int nr)
{
int j,p2;
while(nr && x)
{
p2=1;
for(j=0; p2*2<=q; ++j)
p2*=2;
x=rmq[j][x];
nr-=p2;
}
return x;
}
int main()
{
fin>>n>>q;
for(i=1; i<=n; ++i)
fin>>rmq[0][i];
k = log2(n);
for(j=1; j<=k; ++j)
for(i=1; i<=n; ++i)
rmq[j][i]=rmq[j-1][rmq[j-1][i]];
while(q--)
{
fin>>x>>nr;
fout<<compute(x,nr)<<'\n';
}
}