Cod sursa(job #393441)
Utilizator | Data | 9 februarie 2010 14:41:24 | |
---|---|---|---|
Problema | Stramosi | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include<stdio.h>
#define Nmax 250010
int a[20][Nmax],p,q,i,j,n,m,Lg[Nmax];
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&a[0][i]);
for(i=2;i<=n;i++)
Lg[i]=Lg[i>>1]+1;
for(j=1; j <= Lg[n] ; j++)
for(i=1; i<=n; i++)
a[j][i]=a[j-1][a[j-1][i]];
for(i=1;i<=m;i++)
{
scanf("%d %d",&q,&p);
while(p)
{
q=a[Lg[p]][q];
p-=(1<<Lg[p]);
}
printf("%d\n",q);
}
return 0;
}