Pagini recente » Cod sursa (job #3212016) | Cod sursa (job #2717214) | Cod sursa (job #344081) | Cod sursa (job #585413) | Cod sursa (job #2070576)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
const int NMAX = 250005;
int v[NMAX], N, Q;
int rmq[NMAX][20], lg[NMAX];
void pr()
{
for (int j = 1; j <= 18; ++j)
{
for (int i = 1; i <= N; ++i)
{
int stramos_jminusunu = rmq[i][j - 1];
rmq[i][j] = rmq[stramos_jminusunu][j - 1];// f(f(j - 1))
}
}
}
vector < int > p;
int RMQ (int x, int y)
{
for (int i = 17; i >= 0; i--)
if (y & (1 << i))
x = rmq[x][i];
return x;
}
void read()
{
fin >> N >> Q;
for (int i = 1; i<=N; ++i)
{
fin >> v[i];
rmq[i][0] = v[i];
}
pr();
int x, y;
for (int i = 1; i<=Q; ++i)
{
fin >> x >> y;
fout << RMQ(x, y)<< "\n";
}
}
int main()
{
read();
return 0;
}