Pagini recente » Cod sursa (job #3157108) | Cod sursa (job #2707443) | Istoria paginii runda/rar92/clasament | Cod sursa (job #1220941) | Cod sursa (job #1321627)
#include <iostream>
#include <fstream>
#define nmax 250005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, nod, p;
int stramos[20][nmax], Exp[nmax];
void citire() {
fin >> n >> m;
for (int i = 1; i <= n; i++)
fin >> stramos[0][i];
}
int find(int p, int nod) {
if (p > n) return 0;
if (p == 0) return nod;
int i = Exp[p];
return find(p - (1<<i), stramos[i][nod]);
}
void solve() {
for (int i = 1; (1<<i) <= n; i++)
for (int j = 1; j <= n; j++)
stramos[i][j] = stramos[i-1][stramos[i-1][j]];
for (int i = 2; i <= n; i++)
Exp[i] = Exp[i/2] + 1;
for (int i = 1; i<= m; i++) {
fin >> nod >> p;
fout << find(p, nod) << "\n";
}
}
int main() {
citire();
solve();
fin.close();
fout.close();
return 0;
}