RT,树状数组在第10点T了
#include<bits/stdc++.h>
#define reg register
using namespace std;
int a[100003],c[100003]={0x7fffffff};
int main(){
int n,m;cin>>n>>m;
for( reg int i=1,y;i<=n;i++){
scanf("%d",&y);
a[i]=y,c[i]=y;
for(int j=1;j<i&(-i);j<<=1)c[i]=min(c[i],c[i-j]);
}
for(reg int i=1,p,o;i<=m;i++){
scanf("%d%d",&o,&p);
int ans=0x7fffffff;
while(1){
ans=min(ans,a[p]);
if(p==o)break;
for(p--;p-o>=p&(-p);p-=p&(-p))ans=min(ans,c[p]);
}
cout<<ans<<" ";
}
}