Pagini recente » Cod sursa (job #2034589) | Cod sursa (job #1104456) | Cod sursa (job #414599) | Cod sursa (job #951252) | Cod sursa (job #1795741)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
main() {
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m, sqn, INFINIT = 100001;
cin>>n>>m;
sqn = round(sqrt(n))+1;
vector<int> a(n), v(sqn);
fill(v.begin(), v.end(), INFINIT);
for (int i = 0; i < n; i++) {
cin>>a[i];
v[i/sqn] = min(v[i/sqn], a[i]);
}
for (int j = 0; j < m; j++) {
int x, y, z;
cin>>x>>y;
x--;
z = a[x];
int i = x;
while (i<y && i%sqn>0) {
z = min(z, a[i]);
i++;
}
while(i+sqn<y) {
z = min(z, v[i/sqn]);
i += sqn;
}
while (i<y) {
z = min(z, a[i]);
i++;
}
cout<<z<<"\n";
}
}