???猎奇题解
2026-01-31 20:28:42
发布于:广东
4阅读
0回复
0点赞



#include<iostream>
using namespace std;
int tree1[405],tree2[405],a[105],n;
void build(int id,int l,int r){
if(l>=r){
tree1[id]=a[l];
tree2[id]=a[l];
return;
}
int mid=l+r>>1;
build(id<<1,l,mid);
build(id<<1|1,mid+1,r);
tree1[id]=max(tree1[id<<1],tree1[id<<1|1]);
tree2[id]=min(tree2[id<<1],tree2[id<<1|1]);
}
int find1(int id,int l,int r){
if(l>=r) return tree1[id];
int mid=l+r>>1;
return min(find1(id<<1,l,mid),find1(id<<1|1,mid+1,r));
}
int find2(int id,int l,int r){
if(l>=r) return tree2[id];
int mid=l+r>>1;
return max(find2(id<<1,l,mid),find2(id<<1|1,mid+1,r));
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,1,n);
cout<<find1(1,1,n)<<' '<<find2(1,1,n);
return 0;
}
这里空空如也




有帮助,赞一个