Pagini recente » Cod sursa (job #3244450) | Cod sursa (job #199935) | Cod sursa (job #1877667) | Cod sursa (job #1118688) | Cod sursa (job #189625)
Cod sursa(job #189625)
#include <stdio.h>
#define NMAX 250005
#define KMAX 18
int N, M, m[20][NMAX];
int putere(int a)
{
int p = 0;
while ((1<<p)<=a) p++;
return --p;
}
void rezolv()
{
int k, i;
for ( k = 1; k <= KMAX; k++)
for ( i = 1; i <= N; i++)
m[k][i] = m[k-1][m[k-1][i]];
}
int main()
{
int a, b, i, p;
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &N, &M);
for ( i = 1; i <= N; i++)
scanf("%d", &m[0][i]);
rezolv();
for ( i = 1; i <= M; i++)
{
scanf("%d %d", &a, &b);
while ( b != 0)
{
p = putere(b);
a = m[p][a];
b -= (1 << p);
}
printf("%d\n", a);
}
return 0;
}