#include <bits/stdc++.h> #include<math.h> #include <string> using namespace std; const int MAXN = 100005; //const int MOD = 1000000007; const int INF = 0x3fffffff;//一个很大的数 int a[MAXN],leftMax[MAXN],rightMin[MAXN]; //ans记录所有主元,num为主元个数 int ans[MAXN],num = 0; int main(){ int n; cin>>n; for(int i=0;i<n;++i){ cin>>a[i]; } leftMax[0] = 0;//A[0]左边没有比它大的数 for(int i = 0;i<n;++i){ leftMax[i] = max(leftMax[i-1],a[i-1]);//由i-1 推的 i } rightMin[n-1] = INF;//A[n-1]右边没有比它小的数 for(int i=n-2;i>=0;--i){ rightMin[i] = min(rightMin[i+1],a[i+1]); } for(int i=0;i<n;++i){ //左边所有数比它小,右边所有数比它大 if(leftMax[i] < a[i] && rightMin[i] > a[i]){ ans[num++] = a[i]; } } cout<<num<<endl; for(int i=0;i<num;++i){ cout<<ans[i]; if(i < num - 1){ cout<<" "; } } cout<<endl; system("pause"); return 0; }