Pagini recente » Borderou de evaluare (job #1566981) | Cod sursa (job #399926) | Borderou de evaluare (job #1528298) | Cod sursa (job #345598) | Cod sursa (job #3134194)
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int N, M, i, k;
int arboriGenealogici[20][250002];
int gasesteStramos(int a, int k)
{
if (k == 0)
return a;
else
{
int p = 18;
while ((1 << p) > k)
p--;
k -= (1 << p);
gasesteStramos(arboriGenealogici[p][a], k);
}
}
int main()
{
f >> N >> M;
for (i = 1; i <= N; i++)
f >> arboriGenealogici[0][i];
for (k = 1; k <= 18; k++)
{
for (i = 1; i <= N; i++)
{
arboriGenealogici[k][i] = arboriGenealogici[k - 1][arboriGenealogici[k - 1][i]];
}
}
while (M--)
{
f >> k >> i;
g << gasesteStramos(k, i) << '\n';
}
f.close();
g.close();
return 0;
}