Cod sursa(job #3234414)
Utilizator | Data | 9 iunie 2024 11:27:02 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int v[250250][25], N, M;
int main()
{
fin >> N >> M;
for (int i = 1; i <= N; i++)
fin >> v[i][0];
for (int i = 1; i <= N; i++)
{
for (int j = 1; (1 << j) <= N; j++)
v[i][j] = v[v[i][j - 1]][j - 1];
}
while (M)
{
int x, y;
fin >> x >> y;
int rez = y;
for (int i = 0; (1 << i) <= y; i++)
{
if ((x & (1 << i)) != 0)
rez = v[rez][i];
}
fout << rez << "\n";
M--;
}
return 0;
}