Pagini recente » Cod sursa (job #2890452) | Cod sursa (job #717988) | Cod sursa (job #390873) | Cod sursa (job #369479) | Cod sursa (job #226605)
Cod sursa(job #226605)
#include <stdio.h>
#define maxn 250015
#define maxm 300015
#define pr(x) fprintf(stderr,#x" = %d\n",x)
int n, m, a [25] [maxn];
void scan ()
{
int i;
scanf ("%d%d", &n, &m);
for (i=1; i<=n; ++i)
scanf ("%d", &a [0] [i]);
}
void stramosi ()
{
int i, j;
for (i=1; i <= 19; ++i)
{
for (j=1; j<=n; ++j)
a [i] [j]=a [i-1] [a [i-1] [j]];
}
}
int rez (int p, int q)
{
int i, u;
for (i=0, u=1; i<=18; ++i, u<<=1)
if (q & u)
p=a [i] [p];
return p;
}
int main ()
{
freopen ("stramosi.in", "r", stdin);
freopen ("stramosi.out", "w", stdout);
int p, q;
scan ();
stramosi ();
for (int i=1; i<=m; ++i)
{
scanf ("%d%d", &p, &q);
printf ("%d\n", rez (p, q));
}
return 0;
}