Pagini recente » Cod sursa (job #1893236) | Cod sursa (job #1784510) | Cod sursa (job #238209) | Cod sursa (job #3231642) | Cod sursa (job #2118463)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int nmax = 100005;
int rmq[18][nmax], log2[nmax], x, y, i, j, n, m, dif;
int main() {
f >> n >> m;
for (i = 1; i <= n; i++)
f >> x, rmq[0][i] = x, log2[i+1] = log2[(i+1)/2]+1;
for (i = 1; (1 << i) <= n; i++) {
for (j = 1; j+(1<<i)-1 <= n; j++)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
}
while (m--) {
f >> x >> y;
dif = y-x+1, i = log2[dif];
g << min(rmq[i][x], rmq[i][y-(1<<i)+1]) << '\n';
}
return 0;
}