Pagini recente » Cod sursa (job #1814177) | Cod sursa (job #1945162) | Cod sursa (job #683012) | Cod sursa (job #2182819) | Cod sursa (job #2755923)
#include <iostream>
#include <fstream>
std::ifstream f("stramosi.in");
std::ofstream g("stramosi.out");
int N, M;
int Tabel[20][250001];
int main()
{
f >> N >> M;
for(int i = 1; i <= N; ++i)
f >> Tabel[0][i];
for(int i = 1, putere = 2; putere <= N; putere *= 2, ++i)
for(int j = 1; j <= N; ++j)
Tabel[i][j] = Tabel[i - 1][ Tabel[i - 1][j] ];
for(int Q, P, i = 0; i < M; ++i)
{
f >> Q >> P;
int putere = 1, idx_putere = 0;
while(putere < P)
{
putere *= 2;
++idx_putere;
}
int stramos = Q;
while(P != 0 && stramos != 0)
{
if(putere <= P)
{
stramos = Tabel[idx_putere][stramos];
P -= putere;
}
putere /= 2;
--idx_putere;
}
g << stramos << '\n';
}
return 0;
}