Pagini recente » Cod sursa (job #1620675) | Cod sursa (job #1681813) | Cod sursa (job #2643237) | Cod sursa (job #2675703) | Cod sursa (job #2901215)
#include <iostream>
#include <fstream>
#define MAXN 500000
#define MAXL 25
std::ifstream in("stramosi.in");
std::ofstream out("stramosi.out");
int n, m, a[MAXL][MAXN], q, p;
int main()
{
in >> n >> m;
for (int i = 1; i <= n; i++)
{
a[0][i] = i;
in >> a[1][i];
}
for (int i = 2; i <= MAXL; i++)
for (int j = 1; j <= n + 1; j++)
a[i][j] = a[i - 1][a[i - 1][j]];
for (int i = 0; i < m; i++)
{
in >> q >> p;
int nr = 1;
while (p)
{
if (p % 2)
q = a[nr][q];
nr++;
p /= 2;
}
out << q << '\n';
}
return 0;
}
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13
// 1 0 1 2 2 4 1 6 0 8 8 10 10 12
// 2 0 0 1 1 2 0 1 0 0 0 8 8 10
// 3 0 0 0 0 0 0 0 0 0 0 0 0 0