Pagini recente » Cod sursa (job #1151316) | Cod sursa (job #1456371) | Cod sursa (job #1121893) | Cod sursa (job #1843761) | Cod sursa (job #601649)
Cod sursa(job #601649)
#include <stdio.h>
#include <math.h>
#define MAX 250001
#define LOGMAX 17
int a[MAX][LOGMAX];
int main()
{
int n, m, p, q, aux, coef, str, i, j, rang;
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]);
}
for(i=1;i<=n;i++)
{
for(j=1;j<log2(n);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;
}