10分 AC #9 玄关
  • 板块P1816 忠诚
  • 楼主hehehy
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/3/23 16:37
  • 上次更新2024/3/23 18:43:52
查看原帖
10分 AC #9 玄关
1036685
hehehy楼主2024/3/23 16:37
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100005],b[3000005],lb[3000005],rb[3000005],x,y;
int bt(int l,int r,int u){
    lb[u]=l,rb[u]=r;
    if(l==r){
        return b[u]=a[l];
    }
    return b[u]=min(bt(l,(l+r)/2,u*2),bt((l+r)/2+1,r,u*2+1));
}
int cx(int l,int r,int u){
    if(l==lb[u]&&rb[u]==r){
        return b[u];
    }
    int res=1000000000;
    if(l<=(l+r)/2){
        res=min(res,cx(l,min(rb[u*2],r),u*2));
    }
    if(r>(l+r)/2){
        res=min(res,cx(max(l,lb[u*2+1]),r,u*2+1));
    }
    return res;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    b[1]=bt(1,n,1);
    for(int i=1;i<=m;i++){
        cin>>x>>y;
        cout<<cx(x,y,1)<<" ";
    }
    return 0;
}
2024/3/23 16:37
加载中...