Pagini recente » Cod sursa (job #1171838) | Cod sursa (job #2865809) | Cod sursa (job #1253244) | Cod sursa (job #407318) | Cod sursa (job #1451192)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int MAX = 200001;
int rmq[19][MAX], n, m;
void create_rmq(){
for (int i = 1; (1 << i) <= n; i++)
for (int j = 1; j <= n; j++)
rmq[i][j] = rmq[i - 1][rmq[i - 1][j]];
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++)
fin >> rmq[0][i];
create_rmq();
for (int p, q, sol; m; m--){
fin >> q >> p;
for (int i = 0; (1 << i) <= p; i++)
if ((1 << i) & p)
q = rmq[i][q];
fout << q << '\n';
}
return 0;
}