这里用到的思想主要是对数组副本进行排序,然后与原数组进行对比,同样位置相同则表明有可能是主元,如果大于等于前面的每一个数(用等于是因为包括自身),则一定是主元
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int N,max=0,numPrimary=0;
long int num[100000],num2[100000];
long int Primarys[100000];
cin>>N;
for(int i=0;i<N;i++){
cin>>num[i];
num2[i]=num[i];
}
sort(num2,num2+N);
for(int i=0;i<N;i++){
if(num[i]>max) max=num[i];
if(num[i]==num2[i]&&num[i]>=max){
Primarys[numPrimary]=num[i];
numPrimary++;
}
}
cout<<numPrimary<<endl;
if(numPrimary==0){
cout<<endl;
}
for(int i=0;i<numPrimary;i++){
if(i==0){
cout<<Primarys[i];
}else{
cout<<" "<<Primarys[i];
}
}
return 0;
}