Pagini recente » Cod sursa (job #2153785) | Cod sursa (job #678654) | Cod sursa (job #2403434) | Cod sursa (job #2953547) | Cod sursa (job #2758224)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
#define DIM 100005
#define NMAX 18
int v[NMAX][DIM], i, j, n, m, a[DIM], lg[DIM], x, y;
static inline void log2() {
lg[1] = 0;
for(i = 2; i <= n; i++)
lg[i] = lg[i / 2] + 1;
}
int main() {
cin >> n >> m;
for(i = 1; i <= n; i++)
cin >> a[i];
log2();
for(j = 1; j <= n; j++)
v[0][j] = a[j]; ///initializez prima linie a matricei;
int lin = lg[n];
for(i = 1; i <= lin; i++)
for(j = 1; j <= n; j++)
v[i][j] = min(v[i - 1][j], v[i - 1][j + (1 << (i - 1))]);
for(i = 1; i <= m; i++) {
cin >> x >> y;
int k = lg[y - x];
cout << min(v[k][x], v[k][y - (1 << k) + 1]) << '\n';
}
return 0;
}