Pagini recente » Cod sursa (job #1594185) | Profil stay_awake77 | Cod sursa (job #3140470) | Cod sursa (job #2317890) | Cod sursa (job #2974770)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
const int NMAX = 1e5;
const int LOGMAX = 17;
int N, M;
int v[NMAX + 1];
int rasp[LOGMAX + 1][NMAX + 1];
// int lg2[NMAX + 1];
int main() {
fin >> N >> M;
for(int i = 1; i <= N; i++) {
fin >> v[i];
}
for(int j = 1; j <= N; j++) {
rasp[0][j] = v[j];
}
for(int i = 1; (1 << i) <= N; i++) {
for(int j = 1; j + (1 << i) - 1 <= N; j++) {
rasp[i][j] = min(rasp[i - 1][j], rasp[i - 1][j + (1 << (i - 1))]);
}
}
// lg2[1] = 0;
// for(int i = 2; i <= N; i++) {
// lg2[i] = lg2[i / 2] + 1;
// }
for(int i = 1; i <= M; i++) {
int x, y;
fin >> x >> y;
int lg = y - x + 1;
int k = __lg(lg);
// int k = lg2[lg];
fout << min(rasp[k][x], rasp[k][y - (1 << k) + 1]) << '\n';
}
return 0;
}