PAT A1101
在数据输入时就可以得到每一元素左边最大值;
倒序遍历数组得到每一元素右边最小值。
maxnum=max(maxnum[i-1],a[i-1]);
下方代码超时。。。
#include<iostream>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
bool findmin(vector<int> a,int n){
if(n==0) return true;
if(*max_element(a.begin(),a.begin()+n)>a[n]){
return false;
}
return true;
}
bool findmax(vector<int> a,int n){
if(n==a.size()-1) return true;
if(*min_element(a.begin()+n+1,a.end())<a[n]){
return false;
}
return true;
}
int main(){
vector<int> a;
vector<int> ans;
int n,b;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&b);
a.push_back(b);
}
for(int i=0;i<n;i++){
if(findmin(a,i)&&findmax(a,i)){
ans.push_back(a[i]);
}
}
sort(ans.begin(),ans.end());
printf("%d\n",ans.size());
for(int i=0;i<ans.size();i++){
printf("%d",ans[i]);
if(i<ans.size()-1){
printf(" ");
}
}
}