Mai intai trebuie sa te autentifici.
Cod sursa(job #686540)
| Utilizator | Data | 21 februarie 2012 18:16:30 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include<cstdio>
using namespace std;
int N,M,Q,P,S,i,j,LG[250010],stra[250010][20];
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&N,&M);
scanf("%d",&stra[0][1]);
for(i=2;i<=N;i++)
{
scanf("%d",&stra[0][i]);
LG[i]=LG[i>>1]+1;
}
for(i=1;(1<<i)<=N;i++)
{
for(j=1;j<=N;j++)
{
stra[i][j]=stra[i-1][stra[i-1][j]];
}
}
}
void solve()
{
for(;M--;)
{
scanf("%d%d",&Q,&P);
while(P)
{
j=LG[P];
Q=stra[j][Q];
S=Q;
P-=(1<<j);
}
printf("%d\n",S);
}
}
