AcWing 1591. 快速排序
原题链接
简单
作者:
eggyeggy
,
2023-11-16 14:52:11
,
所有人可见
,
阅读 41
#include<iostream>
#include<algorithm> //算法库,sort函数
#include<vector>
using namespace std;
const int N=100010;
int a[N],l[N],r[N]; //大于左边的最大值,小于右边的最小值
int main(){
int n;
scanf("%d",&n);
int count=0;
l[0]=-1e9,r[n+1]=1e9; //无穷大,无穷小
for(int i=1;i<=n;i++){ //从1开始
scanf("%d",&a[i]);
l[i]=max(a[i],l[i-1]);
}
for(int i=n;i>=1;i--){
r[i]=min(a[i],r[i+1]);
}
vector<int> q;
for(int i=1;i<=n;i++){
if(a[i]>=l[i]&&a[i]<=r[i]){
q.push_back(a[i]);
}
}
printf("%d\n",q.size());
if(q.size()==0){
printf("\n");
}else{
sort(q.begin(),q.end());
for(int i=0;i<q.size();i++){
printf("%d ",q[i]);
}
}
return 0;
}