Pagini recente » Cod sursa (job #3171027) | Cod sursa (job #7194) | Cod sursa (job #2879248) | Cod sursa (job #738622) | Cod sursa (job #575907)
Cod sursa(job #575907)
#include <cstdio>
#include <cstring>
#include <fstream>
#define Nmx 250002
#define Lmx 21
using namespace std;
int lg[Nmx],n,m,best[Lmx][Nmx];
ifstream fin("stramosi.in");
void read()
{
fin>>n>>m;
for(int i=1;i<=n;++i)
fin>>best[0][i];
lg[1]=0;
for(int i=2;i<=n;++i)
lg[i]=lg[i/2]+1;
}
void preproc()
{
for(int i=1;(1<<i)<=n;++i)
for(int j=1;j<=n;++j)
best[i][j]=best[i-1][best[i-1][j]];
}
void solve()
{
int x,y;
for(int i=1;i<=m;++i)
{
fin>>x>>y;
while(y)
{
x=best[lg[y]][x];
y=y-(1<<lg[y]);
}
printf("%d\n",x);
}
}
int main()
{
freopen("stramosi.out","w",stdout);
read();
preproc();
solve();
return 0;
}