Pagini recente » Cod sursa (job #2614393) | Cod sursa (job #3038174) | Cod sursa (job #763135) | Cod sursa (job #2343915) | Cod sursa (job #3181062)
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n,m,v[250002],q,p,aux,d[19][250002],e[250002],power;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>v[i],d[0][i]=v[i];
e[1]=0;
for(int i=2;i<=n;i++)
e[i]=e[i/2]+1;
///facem ca la rmq
///pastram stramosi mergand din putere de 2 in putere de 2
for(int p=1;(1<<p)<=n;p++)
for(int i=1;i<=n;i++)
{
d[p][i]=d[p-1][d[p-1][i]];
}
for(int i=1;i<=m;i++)
{
cin>>q>>p;
aux=q;
power=0;
while(p!=0)
{
if(p%2==1)
aux=d[power][aux];
power++;
p=p/2;
}
cout<<aux<<'\n';
}
return 0;
}