这个点我是真滴想不出来,格式错误,竟然是要在主元为0的时候输出两个换行。。。
常考点了,记着这种方法,很实用,left和right数组存放一个点左边左右元素的同种属性信息。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100000]={};
int l[100000]={};
int r[100000]={};
int c[100000];
int main(){
int n,num=0;
int max=0,min=1000000000;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>max){
max=a[i];
}
l[i]=max;
}
for(int i=n-1;i>=0;i--){
if(a[i]<min){
min=a[i];
}
r[i]=min;
}
for(int i=0;i<n;i++){
if(a[i]>=l[i]&&a[i]<=r[i]){
c[num]=a[i];
num++;
}
}
if(num==0){
printf("0\n\n");
return 0;
}
printf("%d\n",num);
for(int i=0;i<num;i++){
printf("%d",c[i]);
if(i!=num-1){
printf(" ");
}
}
return 0;
}