有个坑点是格式输出那里,如果是0的话,换行符要输出2个才行(就是第二行的换行什么情况下都得输出)
# include<stdio.h>
# include<algorithm>
# include<vector>
using namespace std;
# define maxn 100010
struct Num
{
int data;
bool mark;
}a[maxn];
vector<int> ans;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
freopen("123.txt","r",stdin);
int n;
scanf("%d",&n);
int i,j;
int maxN = -1;
int pos = -1;
for(i=0;i<n;i++)
{//输入的时候,如果输入的数据比前面最大值小,标记位置false
scanf("%d",&a[i].data);
if(a[i].data<maxN)
{
a[i].mark = false;
}
else
{
maxN = a[i].data;
a[i].mark = true;
}
}
int minN = a[n-1].data;
for(i=n-1;i>=0;i--)
{//输入完成后,从后面遍历,如果碰到的数据比后面数据最小值还大,标记位置false
if(a[i].data>minN)
a[i].mark = false;
else
{
minN = a[i].data;
}
}
for(i=0;i<n;i++)
{//所有合格数据加到ans中
if(a[i].mark)
ans.push_back(a[i].data);
}
sort(ans.begin(),ans.end(),cmp);
printf("%d\n",ans.size());
for(i=0;i<ans.size();i++)
{
if(i==0) printf("%d",ans[i]);
else printf(" %d",ans[i]);
}
printf("\n");//这是个坑,必须得输出这个换行,如果是0的话也要输出才行
return 0;
}