Pagini recente » Cod sursa (job #2884389) | Istoria paginii runda/1645850989007291 | Monitorul de evaluare | Istoria paginii runda/nostress8/clasament | Cod sursa (job #165519)
Cod sursa(job #165519)
#include <stdio.h>
#define nmax 250005
#define logmax 19
int M, N, logN;
int S[logmax][nmax];
int main()
{
int i, k, p, a, log;
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d%d", &N, &M);
for (i = 1; i <= N; ++i)
scanf("%d", &S[0][i]);
for (logN = 0; (1<<logN) <= N; ++logN);
for (k = 1; k <= logN; ++k)
for (i = 1; i <= N; ++i)
if (S[k-1][S[k-1][i]])
S[k][i] = S[k-1][S[k-1][i]];
while (M--)
{
scanf("%d%d", &i, &k);
for (p = 0, a = i; p < k && a; k-= (1<<log))
{
for (log = 0; (1<<log) <= k; ++log);
if ((1<<log) > k) --log;
a = S[log][a];
}
printf("%d\n", a);
}
return 0;
}