Pagini recente » Cod sursa (job #2407259) | Cod sursa (job #2413281) | Cod sursa (job #1269053) | Cod sursa (job #1699073) | Cod sursa (job #2669886)
#include <iostream>
#include <fstream>
#define O 250005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int TT[O], Log[O], A[20][O];
int N, M;
void citire()
{
fin >> N >> M;
int x, y;
for(int i = 1; i <= N; i++)
fin >> TT[i];
}
void precalculate()
{
for(int i = 2; i <= N; i++)
Log[i] = Log[i/2] + 1;
for(int i = 1; i <= N; i++)
A[0][i] = TT[i];
for(int i = 1; (1 << i) <= N; i++)
for(int j = 1; j <= N; j++)
A[i][j] = A[i-1][A[i-1][j]];
}
int main()
{
int P, Q;
citire();
precalculate();
for(int i = 1; i <= M; i++)
{
fin >> Q >> P;
while(P)
{
int K = Log[P];
Q = A[K][Q];
P -= (1 << K);
}
fout << Q << '\n';
}
}