Pagini recente » Cod sursa (job #1762090) | Cod sursa (job #2228331) | Cod sursa (job #284768) | Cod sursa (job #1232649) | Cod sursa (job #2169205)
#include <iostream>
#include <fstream>
#define maxLog 17
#define maxN 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, x, y, diff, l, k;
int rmq[maxLog][maxN], log[maxLog];
inline int min(int x, int y) {
if (x < y) return x;
return y;
}
int main() {
fin >> n >> m;
for (int i = 1 ; i <= n ; ++i)
fin >> rmq[0][i];
log[1] = 0;
for (int i = 2 ; i <= n ; ++i)
log[i] = log[i/2] + 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))] );
while (m--) {
fin >> x >> y;
diff = y - x + 1;
l = log[diff];
k = diff - (1<<l);
fout << min( rmq[l][x] , rmq[l][x + k] ) << '\n';
}
return 0;
}