Pagini recente » Cod sursa (job #2444415) | Cod sursa (job #639602) | Cod sursa (job #2888334) | Cod sursa (job #329510) | Cod sursa (job #343563)
Cod sursa(job #343563)
#include <fstream>
#define MaxN 100001
using namespace std;
fstream fin ("rmq.in", ios::in);
fstream fout("rmq.out", ios::out);
int v[350000];
int n, m, x, y, best;
void updat(int poz, int val){
int elem = 1;
int st = 1, dr = n;
int mid;
while (1){
if (v[elem] == 0 || v[elem] > val) v[elem] = val;
mid = (st + dr) >> 1;
if (poz <= mid) {
elem = elem << 1;
dr = mid;
} else {
elem = 1 + (elem << 1);
st = mid + 1;
};
if (st == dr) {
v[elem] = val;
return;
};
};
};
void search_it(int elem, int st, int dr){
if (st >= x && dr <= y) best = min(best, v[elem]);
else {
int mid = (st + dr) >> 1;
if (x <= mid) search_it(elem << 1, st, mid);
if (y > mid) search_it( 1 + (elem << 1), mid + 1, dr);
};
};
int main(){
fin>>n>>m;
for (int i = 1; i <= n; ++i){
fin>>x;
updat(i, x);
};
for (int i = 1; i <= m; ++i){
fin>>x>>y;
best = 100001;
search_it(1, 1, n);
fout<<best<<'\n';
};
fin.close();
fout.close();
};