Pagini recente » Cod sursa (job #1468352) | Cod sursa (job #1037650) | Cod sursa (job #2107699) | Cod sursa (job #647622) | Cod sursa (job #2753422)
#include <iostream>
using namespace std;
const int nMax = 100005;
int v[nMax][17], log2[nMax];
int main() {
freopen("rmq.in", "r", stdin);
freopen("rmq.out", "w", stdout);
// Input rapid
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
log2[1] = 0;
for (int i = 2; i <= nMax; i++) {
log2[i] = log2[i / 2] + 1;
}
for (int i = 1; i <= n; i++) {
cin >> v[i][0];
}
for (int p = 1; (1 << p) < n; p++) {
for (int i = 1; i + (1 << p) - 1 <= n; i++) {
v[i][p] = min(v[i][p - 1], v[i + (1 << (p - 1))][p - 1]);
}
}
int st, dr;
for (int q = 0; q < m; q++) {
cin >> st >> dr;
int nr = dr - st + 1;
int rez = min(v[st][log2[nr]], v[dr - (1 << log2[nr]) + 1][log2[nr]]);
cout << rez << "\n";
}
}