Pagini recente » Cod sursa (job #1068855) | Cod sursa (job #1009816) | Cod sursa (job #2584330) | Cod sursa (job #2283920) | Cod sursa (job #3037900)
/* Pop George Ioan
Colegiul National David Prodan Cugir */
#include <iostream>
#include <fstream>
#include <cmath>
#define N 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, a[N];
int arb[4 * N];
void constr(int nod, int st, int dr) {
if(st == dr)
arb[nod] = a[st];
else {
int mijl = (st + dr) / 2;
constr(2 * nod, st, mijl);
constr(2 * nod + 1, mijl + 1, dr);
arb[nod] = min(arb[2 * nod], arb[2 * nod + 1]);
}
}
int interogare(int nod, int st, int dr, int x, int y) {
if(st >= x && dr <= y)
return arb[nod];
int mijl = (st + dr) / 2, val1 = 1e7, val2 = 1e7;
if(x <= mijl)
val1 = interogare(2 * nod, st, mijl, x, y);
if(y > mijl)
val2 = interogare(2 * nod + 1, mijl + 1, dr, x, y);
return min(val1, val2);
}
int main() {
f >> n >> m;
for(int i = 1; i <= n; ++i)
f >> a[i];
constr(1, 1, n);
for(int i = 1; i <= m; ++i) {
int x, y;
f >> x >> y;
g << interogare(1, 1, n, x, y) << '\n';
}
return 0;
}