题意很简单,用直接搜索的方式是20分
但是想不明白为什么要用排序比较大小的方式
暂存
更新
明白了为什么要排序比较了,因为不止是要比它左右两个值,而是所有在它左边的都要比他小,所有在它右边的都要比他大
所以先排序,快排就是以序列中的每一个数做基准,比他大的数就放右边,小的放左边,所以不管怎么排,如果他最开始就是符合条件的,他的位置就不会动
所以就用排序比较的办法了
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <cmath>
#include <map>
#include <set>
#include <unordered_map>
using namespace std;
int n,cnt;
vector<int> ans,arr;
int main(){
cin >> n;
for(int i=0; i<n; i++){
int a;
cin >> a;
ans.push_back(a);
}
for(int i=0; i<n; i++){
if(i+1>=n&&ans[i]>ans[i-1]){
cnt += 1;
arr.push_back(ans[i]);
}
else if(i==0&&ans[i]<ans[i+1]){
cnt += 1;
arr.push_back(ans[i]);
}
else if(ans[i]>ans[i-1]&&ans[i]<ans[i+1]){
cnt += 1;
arr.push_back(ans[i]);
}
}
cout << cnt << endl;
for(int i=0; i<arr.size(); i++){
if(i==0) cout << arr[i];
else cout << " " << arr[i];
}
return 0;
}