Pagini recente » Cod sursa (job #2436295) | Cod sursa (job #2609993) | Cod sursa (job #1688686) | Cod sursa (job #116488) | Cod sursa (job #2518937)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in"); ofstream fout("rmq.out");
int N,M, A[100010],K[350];
int main() {
ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
srand(chrono::steady_clock::now().time_since_epoch().count());
fin>>N>>M;
int sq=floor(sqrt(N));
for(int i=0; i<(N/sq); i++){
K[i]=200000;
for(int j=i*sq; (j-i*sq)<sq; j++){
fin>>A[j];
K[i]=min(K[i], A[j]);
}
}
for(int i=(N/sq)*sq; i<N; i++){
fin>>A[i];
}
int a, b, c, d, f;
for(;M;M--){
fin>>a>>b;
f=1000000000;
c=a/sq+1; d=b/sq;
if(d<=c){
for(int i=a-1; i<b; i++){
f=min(f, A[i]);
}
}
else{
for(int i=c; i<d; i++){
f=min(f, K[i]);
}
c*=sq; d*=sq;
for(int i=a-1; i<c; i++){
f=min(f, A[i]);
}
for(int i=d-1; i<b; i++){
f=min(f, A[i]);
}
}
fout<<f<<"\n";
}
return 0;
}