Pagini recente » Cod sursa (job #498737) | Cod sursa (job #976544) | Cod sursa (job #2458375) | Cod sursa (job #884525) | Cod sursa (job #2790983)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
const int MAX_N = 100000;
const int LOG = 18;
int a[MAX_N];
int m[MAX_N][LOG];
int bin_log[MAX_N];
int main() {
int N, M, L, R, j, i, length;
fin >> N >> M;
bin_log[1] = 0;
for(i = 2; i <= N; i++) {
bin_log[i] = bin_log[i/2]+1;
}
for(i = 0; i < N; i++) {
fin >> a[i];
m[i][0] = a[i];
}
for(j = 1; j < LOG; j++) {
for(i = 0; i + (1 << j) - 1 < N; i++) {
m[i][j] = min(m[i][j-1], m[i+(1<<(j-1))][j-1]);
}
}
while(M)
{
fin >> L >> R;
length = R-L+1;
L--;
R--;
j = bin_log[length];
fout << min(m[L][j], m[R-(1<<j)+1][j]) << '\n';
M--;
}
}