Pagini recente » Cod sursa (job #2816541) | Cod sursa (job #1130652) | Cod sursa (job #855739) | Cod sursa (job #133967) | Cod sursa (job #2901210)
#include <iostream>
#include <fstream>
#define MAXN 400000
#define LOG 25
std::ifstream in("stramosi.in");
std::ofstream out("stramosi.out");
int n, m, a[LOG][MAXN], q, p;
// Care este al P-lea stramos al membrului cu numarul Q?
// 5 2
// Care este al 2-lea stramos al membrului cu numarul 5?
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 <= LOG; i++)
for (int j = 1; j <= n; j++)
a[i][j] = a[i - 1][a[i - 1][j]];
/*for (int i = 1; i < 6; i++)
{
for (int j = 1; j <= n; j++)
out << a[i][j] << ' ';
out << '\n';
}*/
for (int i = 0; i < m; i++)
{
in >> q >> p;
if (a[p][q] != 0)
out << a[p][q] << '\n';
else
out << a[1][a[p - 1][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