[https://www.luogu.com.cn/problem/P1816](P1816 忠诚)
80 pts;
#9 #10 WA了
求调
#include <bits/stdc++.h>
#pragma GCC optmize(2)
using namespace std;
const int N=1e5;
int n,m;
int a[N],d[4*N];
void build(int l,int r,int p){
if(l==r){
d[p]=a[l];
return;
}
int mid=l+r>>1;
build(l,mid,2*p);
build(mid+1,r,2*p+1);
d[p]=min(d[2*p],d[2*p+1]);
return;
}
int getmin(int a,int b,int l,int r,int p){
if(a<=l&&r<=b) return d[p];
int mid=l+r>>1,ans=0x7f7f7f7f;
if(a<=mid) ans=min(ans,getmin(a,b,l,mid,2*p));
if(b>=mid+1) ans=min(ans,getmin(a,b,mid+1,r,2*p+1));
return ans;
}
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
memset(d,0x7f,sizeof(d));
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
build(1,n,1);
while(m--){
int a,b;
cin>>a>>b;
cout<<getmin(a,b,1,n,1)<<" ";
}
return 0;
}