Pagini recente » Cod sursa (job #1590106) | Cod sursa (job #1548503) | Cod sursa (job #1346816) | Cod sursa (job #42504) | Cod sursa (job #2901865)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
#define cin f
#define cout g
int n, idx, x, y, i, j, arr[100001], rmq[16][100001];
//rmq[i][j] = min(arr[j], arr[j+1], ..., arr[j+2^i-1])
int main() {
int n, m;
cin >> n >> m;
for(i = 1; i <= n; i++)
cin >> arr[i];
for(i = 1; i <= n; i++)
rmq[0][i] = arr[i];
for(i = 1; (1 << i) <= n; i++)
for(j = 1; j <= n - (1 << i) + 1; j++)
rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);
for(i = 1; i <= m; i++) {
cin >> x >> y;
idx = floor(log2(y - x + 1));
cout << min(rmq[idx][x], rmq[idx][y - (1 << idx) + 1]) << '\n';
}
}