和乙级的1045快速排序是同一题
需要掌握的就是快速排序中主元的性质
主元要求:1、自己的位置不变;2、在原序列中比其左边所有的值 都要大。
稍微要注意下的是:cout<<endl;要写,即没有主元时也要输出空行。
#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int d1[maxn],d2[maxn];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>d1[i];
d2[i]=d1[i];
}
sort(d2,d2+n);
int ans=0;int max=0;
vector<int> v;
for(int i=0;i<n;i++){
if(d1[i]==d2[i]&&d1[i]>max){
ans++;
v.push_back(d2[i]);
}
if(d1[i]>max) max=d1[i];
}
cout<<ans<<endl;
for(int i=0;i<v.size();i++){
if(i!=0) cout<<" ";
cout<<v[i];
}
cout<<endl;//需要写,不然测试点2格式错误
return 0;
}