Pagini recente » Cod sursa (job #1490915) | Cod sursa (job #534188) | Cod sursa (job #2703322) | Cod sursa (job #19500) | Cod sursa (job #3255267)
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int v[20][100010];
int w[100010];
int n,m,i,j,k,st,dr,minim,poz,l;
int main () {
cin>>n>>m;
for (i=1;i<=n;i++) {
cin>>v[0][i];
}
for (k=1;(1<<k)<=n;k++) {
for (i=1;i<=n;i++) {
j=i+(1<<(k-1));
if (j<=n) {
v[k][i]=min(v[k-1][i],v[k-1][j]);
}
}
}
w[1]=0;
for (i=2;i<=n;i++) {
w[i]=w[i/2]+1;
}
for (i=1;i<=m;i++) {
cin>>st>>dr;
poz=w[dr-st+1];
l=(1<<poz);
cout<<min(v[poz][st],v[poz][dr-l+1])<<"\n";
}
}