Pagini recente » Cod sursa (job #1463794) | Cod sursa (job #2668769) | Cod sursa (job #843226) | Cod sursa (job #2545271) | Cod sursa (job #2683294)
#include "bits/stdc++.h"
using namespace std;
int main()
{
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m;
cin >> n >> m;
vector<int> v(n);
vector<int> ab;
int d = 100;
for(int i = 0; i < n; i++) {
cin >> v[i];
if(i % d == 0) {
ab.push_back(v[i]);
}
else {
if(ab[ab.size() - 1] > v[i]) {
ab[ab.size() - 1] = v[i];
}
}
}
for ( int i = 0 ; i < m; i++) {
int s = 1000001;
int a, b;
cin >> a >> b;
a--;
b--;
int e = a;
while(e % d != 0 && e <= b){
if(s > v[e]){
s = v[e];
}
e++;
}
while(e + d <= b){
if(s > ab[e / d]){
s = ab[e / d];
}
e+=d;
}
while(e <= b){
if(s > v[e]){
s = v[e];
}
e++;
}
cout << s << '\n';
}
return 0;
}