#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
int a[100010],b[100010],c[100010];
bool cmp(int x,int y)
{
return x<y;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){cin>>a[i];b[i]=a[i]; }
sort(a,a+n,cmp);
int num=0;
int maxnum=0;
for(int i=0;i<n;i++)
{
if (a[i]==b[i]&&a[i]>maxnum)
{
c[num]=b[i];
num++;
}
maxnum=max(maxnum,b[i]);
}
cout<<num<<endl;
if (num!=0) {cout<<c[0];}
for(int i=1;i<num;i++)
{
cout<<" "<<c[i];
}
cout<<endl;
system("pause");
return 0;
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
int a[100010],b[100010],c[100010];
bool cmp(int x,int y)
{
return x<y;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){cin>>a[i];b[i]=a[i]; }
sort(a,a+n,cmp);
int num=0;
int maxnum=0;
for(int i=0;i<n;i++)
{
if (a[i]==b[i]&&a[i]>maxnum)
{
c[num]=b[i];
num++;
}
maxnum=max(maxnum,b[i]);
}
cout<<num<<endl;
if (num!=0) {cout<<c[0];}
for(int i=1;i<num;i++)
{
cout<<" "<<c[i];
}
cout<<endl;
system("pause");
return 0;
}
注意点
1.无符合数时要多输出一个空白行,不然有一个点会报错