Pagini recente » Cod sursa (job #50736) | Cod sursa (job #1577632) | Cod sursa (job #1177780) | Cod sursa (job #381337) | Cod sursa (job #1125112)
#include <fstream>
using namespace std;
ifstream in ("stramosi.in");
ofstream out ("stramosi.out");
int v[19][1<<19];
int membri, intrebari;
void read()
{
in >> membri >> intrebari;
for (int i = 1; i <= membri; ++i) {
in >> v[0][i];
}
}
void solve()
{
for (int i = 1; 1 << i <= membri; ++i) {
for (int j = 1; j <= membri; ++j) {
v[i][j] = v[i-1][v[i-1][j]];
}
}
}
int query (int q, int p)
{
int ans = q;
for (int i = 0; 1 << i <= p; ++i) {
if ((1 << i) & p) {
ans = v[i][ans];
}
}
return ans;
}
int main()
{
read();
solve();
int q, p;
for (int i = 1; i <= intrebari; ++i) {
in >> q >> p;
out << query(q, p) << "\n";
}
return 0;
}