Pagini recente » Cod sursa (job #1650391) | Cod sursa (job #3146514) | Cod sursa (job #2272421) | Cod sursa (job #1310403) | Cod sursa (job #2149967)
#include <iostream>
#include <fstream>
#define MAX 100010
using namespace std;
int n,m,ii,mri,a,b,ans;
int mi[MAX][17];
int main()
{
ifstream f ("rmq.in");
ofstream g ("rmq.out");
f>>n>>m; for(int i=1;i<=n;i++)f>>mi[i][0];
for(int sp=1;sp<=16;sp++)
for(int i=1;i<=n;i++){
mi[i][sp]=mi[i][sp-1];
ii=i+(1<<(sp-1));
if(ii<=n)mi[i][sp]=min(mi[i][sp],mi[ii][sp-1]);
}
for(int i=1;i<=m;i++){
f>>a>>b;
mri=b-a+1;ans=MAX;
for(int sp=0;mri;mri/=2,sp++)
if(mri%2)ans=min(ans,mi[a][sp]),a+=(1<<sp);
g<<ans<<'\n';
}
f.close();
g.close();
return 0;
}