Pagini recente » Cod sursa (job #1638323) | Cod sursa (job #349613) | Cod sursa (job #451602) | Cod sursa (job #1903126) | Cod sursa (job #2582295)
#pragma GCC optimize ("-O2")
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
const int N=250005;
int p[20][N];
int lg2[N];
int citire()
{
char ch;
int nr=0;
cin.get(ch);
while(ch!=' ' and ch!='\n')
nr=nr*10+ch-'0',cin.get(ch);
return nr;
}
int main()
{
int n,q;
n=citire();
q=citire();
for(int i=1; i<=n; i++)
p[0][i]=citire();
lg2[1]=0;
for(int i=2; i<N; i++)
lg2[i]=lg2[i/2]+1;
for(int log=1; log<20; log++)
{
for(int i=1; i<=n; i++)
{
p[log][i]=p[log-1][p[log-1][i]];
}
}
for(int i=1; i<=q; i++)
{
int poz,rk;
poz=citire();
rk=citire();
while(rk)
{
poz=p[lg2[rk]][poz];
if(poz==0)
break;
rk-=(1<<lg2[rk]);
}
cout<<poz<<'\n';
}
return 0;
}