Pagini recente » Cod sursa (job #1818906) | Cod sursa (job #358254) | Cod sursa (job #1254237) | Cod sursa (job #1839132) | Cod sursa (job #3291517)
#include <fstream>
#define MAX_N 100001
#define LOG 17
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int v[MAX_N];
int rmq[MAX_N][LOG];
int binary[MAX_N];
int query (int l,int r) {
int length=r-l+1;
int log=binary[length];
return min(rmq[l][log],rmq[r-(1<<log)+1][log]);
}
int main() {
int n,q;
cin>>n>>q;
//Creating log
binary[1]=0;
for (int i=2; i<=n; ++i) binary[i]=binary[i/2]+1;
for (int i=1; i<=n; ++i) {
cin>>v[i];
rmq[i][0]=v[i];
}
//Creating rmq
for (int j=1; j<=LOG; ++j) {
for (int i=1; i<=n-(1<<j)+1; ++i) {
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
}
}
//Answering queries
while (q--) {
int l,r;
cin>>l>>r;
cout<<query(l,r)<<'\n';
}
}