Pagini recente » Cod sursa (job #2999713) | Cod sursa (job #2779025) | Cod sursa (job #2850262) | Cod sursa (job #800728) | Cod sursa (job #3160320)
#include<fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int rmq[20][100001];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>rmq[0][i];
}
for(int p=1;(1<<p)<=n;p++){
for(int i=1;i<=n;i++){
rmq[p][i]=rmq[p-1][i];
int j=1<<(p-1);
if(j+i<=n&&rmq[p][i]>rmq[p-1][i+j])
rmq[p][i]=rmq[p-1][i+j];
}
}
for(int k=1;k<=m;k++){
int st,dr;
cin>>st>>dr;
int len=dr-st+1;
int p=0,pp=1;
while(pp*2<=len)
pp*=2,p++;
cout<<min(rmq[p][st],rmq[p][dr-pp+1])<<"\n";
}
}