Pagini recente » Cod sursa (job #2940335) | Cod sursa (job #2748132) | Cod sursa (job #950124) | Cod sursa (job #2478980) | Cod sursa (job #2917710)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
constexpr inline int lg(int n)
{
return 31 - __builtin_clz(n);
}
const int NMAX = 100000;
int n, m, lgmax, x, y;
int a[NMAX];
int rmq[lg(NMAX) + 1][NMAX];
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int main()
{
//ios_base::sync_with_stdio(false);
//cin.tie(0); cout.tie(0);
cin >> n >> m;
for(int i = 0; i < n; i++)
cin >> a[i];
for(int i = 0; i < n; i++)
rmq[0][i] = a[i];
lgmax = lg(n);
for(int h = 1; h <= lgmax; h++)
for(int i = 0; i + (1 << h) - 1 < n; i++)
rmq[h][i] = min(rmq[h - 1][i], rmq[h - 1][i + (1 << (h - 1))]);
for(int i = 0; i < m; i++)
{
cin >> x >> y;
x--; y--;
int lgc = lg(y - x + 1);
cout << min(rmq[lgc][x], rmq[lgc][y - (1 << lgc) + 1]) << '\n';
}
}