Pagini recente » Cod sursa (job #1945597) | Cod sursa (job #1670272) | Borderou de evaluare (job #2011566) | Cod sursa (job #2780923) | Cod sursa (job #601654)
Cod sursa(job #601654)
#include <stdio.h>
#include <math.h>
#define MAX 250010
#define LOGMAX 18
int a[MAX][LOGMAX];
int main()
{
int n, m, p, q, aux, coef, str, i, j, rang, log2n;
FILE *fin = freopen("stramosi.in", "r", stdin);
FILE *fout = freopen("stramosi.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i=1;i<=n;i++)
{
scanf("%d", &a[i][0]);
}
log2n = ceil(log2(n));
for(i=1;i<=n;i++)
{
for(j=1;j<=log2n;j++)
{
a[i][j] = a[a[i][j-1]][j-1];
}
}
for(i=0;i<m;i++)
{
scanf("%d %d", &q, &p);
aux = p;
str = q;
while(aux)
{
coef = aux ^ (aux & (aux-1));
rang = (int)log2(coef);
str = a[str][rang];
aux = aux & (aux-1);
}
printf("%d\n", str);
}
return 0;
}