Pagini recente » Cod sursa (job #791564) | Cod sursa (job #1598881) | Cod sursa (job #2514573) | Cod sursa (job #685179) | Cod sursa (job #1795755)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
main() {
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n, m, sqn, INFINIT = 100001;
cin>>n>>m;
sqn = 100;
vector<int> a(n), v(n/sqn+1);
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";
}
}