Pagini recente » Cod sursa (job #2187532) | Cod sursa (job #1049868) | Cod sursa (job #1033014) | Cod sursa (job #1398745) | Cod sursa (job #2674958)
#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 mn = 1000001;
for(int i = 0; i < n; i++) {
cin >> v[i];
if(i % 100 != 0 || i == 0) {
if(mn > v[i]) {
mn = v[i];
}
}
else {
ab.push_back(mn);
mn = 1000001;
}
if (mn != 1000001 && i == (n - 1)) {
ab.push_back(mn);
}
}
for ( int i = 0 ; i < m; i++) {
int s = 1000001;
int a, b;
cin >> a >> b;
if((a - 1) / 100 == (b - 1) / 100) {
for(int e = a - 1; e < b; e++) {
if(s > v[e]) {
s = v[e];
}
}
}
else {
int q = (a - 1) / 100;
int q1 = (b - 1) / 100;
if ((a - 1) % 100 != 0) {
q++;
}
if ((b - 1) % 100 == 99) {
q1++;
}
if(q != q1) {
for(int e = q; e < q1; e++) {
if(s > ab[e]) {
s = ab[e];
}
}
}
while ((a - 1) % 100 > 0) {
if (s > v[a - 1]) {
s = v[a - 1];
}
a++;
}
while((b - 1) % 100 >= 0 && (b - 1) % 100 != 99) {
if (s > v[b - 1]) {
s = v[ b - 1];
}
b--;
}
}
cout << s << '\n';
}
return 0;
}