Cod sursa(job #293205)
| Utilizator | Data | 1 aprilie 2009 08:00:51 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <stdio.h>
long a[18][250000];
long n,m,i,p,q,nr,j;
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=1; i<=n; ++i)
scanf("%ld",&a[0][i]);
nr=1;
i=n;
while (i!=0)
{
for (j=1; i<=n; ++j)
a[nr][j]=a[nr-1][a[nr-1][j]];
i/=2;
++nr;
}
for (i=1; i<=m; ++i)
{
nr=0;
scanf("%ld %ld",&p,&q);
while (q && p)
{
if (q%2==1) p=a[nr][p];
++nr;
q/=2;
}
printf("%ld\n",p);
}
fclose(stdin); fclose(stdout);
return 0;
}
