Pagini recente » Cod sursa (job #1645151) | Cod sursa (job #2709636) | Cod sursa (job #1270184) | Cod sursa (job #27396) | Cod sursa (job #1784767)
#include<iostream>
#include<fstream>
#include<climits>
#include<cmath>
using namespace std;
int v[100005], ms[330];
int main(){
ifstream in("rmq.in");
ofstream out("rmq.out");
int N, M, i, j, l, a, b, mm;
in >> N >> M;
l = sqrt(N);
for (i = 0; i < 329; ++i) ms[i] = INT_MAX;
for (i = 0; i < N; ++i) {
in >> v[i];
if (ms[i/l] > v[i]) ms[i/l] = v[i];
}
while (M--) {
in >> a >> b;
--a, --b;
mm = INT_MAX;
for(i = a; i % l; ++i) if(mm > v[i]) mm = v[i];
for(j = i/l; j * l < b; ++j) if(mm > ms[j]) mm = ms[j];
for(i = j * l; i <= b; ++i) if(mm > v[i]) mm = v[i];
out << mm <<'\n';
}
}