Pagini recente » Cod sursa (job #1984880) | Cod sursa (job #1831124) | Cod sursa (job #2024846) | Cod sursa (job #2252056) | Cod sursa (job #2866617)
#include <fstream>
#include <iostream>
#include <cmath>
#define NMAX 100005
#define LOGMAX 18
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N, M;
int d[NMAX][LOGMAX];
void read() {
fin >> N >> M;
for (int i = 0; i < N; ++i) {
fin >> d[i][0];
}
}
void setValues() {
for (int i = 1; (1 << i) <= N; ++i) {
for (int j = 0; j + (1 << i) - 1 < N; ++j) {
d[j][i] = min(d[j][i - 1], d[j + (1 << (i - 1))][i - 1]);
}
}
}
int main()
{
read();
setValues();
int a, b;
cerr << "\n";
for (int i = 0; i < M; ++i) {
fin >> a >> b;
a--;
b--;
int k = log2(b - a + 1);
fout << min(d[a][k], d[b - (1 << k) + 1][k]) << "\n";
}
return 0;
}