Pagini recente » Cod sursa (job #1678922) | Cod sursa (job #140861) | Cod sursa (job #2294423) | Cod sursa (job #2975111) | Cod sursa (job #2204923)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int N, M, P, Q;
int T[20][250001];
int main()
{
f >> N >> M;
for(int i = 1; i <= N; i++)
f >> T[0][i];
int maxm = (int)log2(N);
for(int i = 1; i <= maxm; i++)
for(int j = 1; j <= N; j++)
T[i][j] = T[i - 1][T[i - 1][j]];
for(int i = 1; i <= M; i++)
{
f >> Q >> P;
int poz = maxm;
while(P)
{
if(P & (1 << poz))
{
Q = T[poz][Q];
P -= (1 << poz);
}
poz--;
}
g << Q << '\n';
}
return 0;
}