Pagini recente » Cod sursa (job #1470318) | Cod sursa (job #1201061) | Cod sursa (job #1372894) | Cod sursa (job #2175606) | Cod sursa (job #1042688)
#include <fstream>
#include <algorithm>
using namespace std;
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int nmax = int(1e5) + 2;
static int rmq[18][nmax];
static int lg[nmax];
int n, m;
cin >> n >> m;
for (int i = 1;i <= n;i++) {
cin >> rmq[0][i];
lg[i + 1] = lg[(i + 1) >> 1] + 1;
}
for (int i = 1; (1 << i) <= n;i++) {
for (int j = 1;j <= n - (1 << i) + 1;j++) {
rmq[i][j] = min(rmq[i - 1][j],rmq[i - 1][j + (1 << (i - 1))]);
}
}
int l, r;
for (int i = 1;i <= m;i++) {
cin >> l >> r;
int L = lg[r - l + 1];
cout << min(rmq[L][l],rmq[L][r - (1 << L) + 1]) << "\n";
}
return 0;
}