Pagini recente » Cod sursa (job #1496632) | Cod sursa (job #1099673) | Cod sursa (job #1243549) | Cod sursa (job #358007) | Cod sursa (job #2067058)
#include <fstream>
#include <cmath>
#define MAXN 100005
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int a[22][MAXN], n, m, q;
inline void Read() {
fin >> n >> q;
for (int i = 1; i <= n; i++)
fin >> a[0][i];
}
inline void RMQ() {
int m = log2(n), pow = 1;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
a[i][j] = min(a[i - 1][j], a[i - 1][j + pow]);
}
pow *= 2;
}
}
inline void Query() {
int aa, bb, val, nn;
for (int i = 1; i <= q; i++) {
fin >> aa >> bb;
nn = log2(bb - aa + 1);
val = 1 << nn;
fout << min(a[nn][aa], a[nn][bb - val + 1]) << "\n";
}
}
int main () {
Read();
RMQ();
Query();
fin.close(); fout.close(); return 0;
}