Pagini recente » Cod sursa (job #1465301) | Cod sursa (job #2834641) | Cod sursa (job #556917) | Cod sursa (job #2384573) | Cod sursa (job #2681267)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int N, M;
vector<int>lg;
vector<vector<int>>w;
int main() {
fin >> N >> M;
lg = vector<int>(N+5);
w = vector<vector<int>>(21, vector<int>(N+5));
for(int i = 1; i <= N; i++) {
fin >> w[0][i];
}
lg[1] = 0;
for(int i = 2; i <= N; i++) {
lg[i] = lg[i >> 1] + 1;
}
for(int i = 1; (1 << i) <= N; i++) {
for(int j = 1; j + (1 << i) - 1 <= N; j++) {
w[i][j] = min(w[i - 1][j], w[i - 1][j + (1 << (i-1))]);
}
}
for(int x, y; M--; ) {
fin >> x >> y;
int len = lg[y - x +1];
fout << min(w[len][x], w[len][y - (1 << len) + 1]) << '\n';
}
return 0;
}