Pagini recente » Cod sursa (job #1507260) | Cod sursa (job #1732830) | Cod sursa (job #1942963) | Istoria paginii runda/runda_de_verificare1 | Cod sursa (job #1135064)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
int n, m;
int v[19][1<<19];
void citeste () {
f >> n >> m;
for (int i = 1; i <= n; i++) f>> v[0][i];
}
void rezolva () {
for (int i = 1; 1<<i <= n; i++)
for (int j = 1; j <= n; j++)
v[i][j] = v[i-1][v[i-1][j]];
}
int query (int q, int p) {
int sol = q;
for (int i = 0; 1<<i <= p; i++) {
if ((1<<i) & p) {
sol = v[i][sol];
}
}
return sol;
}
int main () {
citeste ();
rezolva ();
int q, p;
for (int i = 1; i <= m; i++) {
f >> q >> p;
g << query (q, p) << '\n';
}
return 0;
}