Pagini recente » Cod sursa (job #2306535) | Cod sursa (job #869131) | Cod sursa (job #1001359) | Cod sursa (job #1322893) | Cod sursa (job #67388)
Cod sursa(job #67388)
#include <stdio.h>
#define NMAX 250003
int a[34][NMAX];
int n, m;
void read()
{
int i;
scanf("%d %d", &n, &m);
for(i = 1; i <= n; ++i)
scanf("%d", &a[0][i]);
}
void pre()
{
int i, j, p;
i = 1;
p = 1;
while(p <= n)
{
for(j = 1; j <= n; ++j)
a[i][j] = a[i-1][a[i-1][j]];
++i;
p <<= 1;
}
}
int main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
read();
pre();
for(int k = 1, s, q, i, p; k <= m; ++k)
{
scanf("%d %d", &q, &s);
while(s)
{
p = 1;
i = -1;
while(p <= s)
{
p <<= 1;
++i;
}
q = a[i][q];
s -= (p >> 1);
}
printf("%d\n", q);
}
return 0;
}