Pagini recente » Istoria paginii utilizator/uaic_toncualexandrutoma | Cod sursa (job #1707966) | Cod sursa (job #3273952) | Cod sursa (job #1913045) | Cod sursa (job #3301302)
#include <fstream>
using namespace std;
const int NMAX = 250001, LOG2 = 21;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, t[LOG2][NMAX], lg[NMAX];
void citire()
{
fin >> n >> m;
lg[0] = -1;
for(int i = 1; i <= n; ++i)
{
lg[i] = lg[i >> 1] + 1;
fin >> t[0][i];
}
for(int k = 1; (1 << k) <= n; ++k)
for(int i = 1; i <= n; ++i)
t[k][i] = t[k - 1][t[k - 1][i]];
}
int query()
{
int q, p;
fin >> q >> p;
while(p > 0)
{
q = t[lg[p]][q];
p -= (1 << lg[p]);
}
return q;
}
int main()
{
citire();
while(m--) fout << query() << '\n';
return 0;
}