Pagini recente » Cod sursa (job #2030519) | Istoria paginii runda/sim04 | Cod sursa (job #2831540) | Cod sursa (job #1662029) | Cod sursa (job #1085809)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int N, M, P, Q;
int logaritm;
int best[18][250002];
int main()
{
fin >> N >> M;
for (int i = 1, x; i <= N; ++i)
{
fin >> x;
best[0][i] = x;
}
logaritm = log2(N);
for (int k = 1; k <= logaritm; ++k)
for (int i = 1; i <= N; ++i)
best[k][i] = best[k - 1][best[k - 1][i]];
for (int i = 1; i <= M; ++i)
{
fin >> Q >> P;
P <<= 1;
for (int k = 0; k <= logaritm; ++k)
{
if (Q == 0) break;
P >>= 1;
if (P % 2 == 1) Q = best[k][Q];
}
fout << Q << '\n';
}
fin.close();
fout.close();
return 0;
}