1⃣️题目要求虽然简单,但是不能用暴力法求解
2⃣️没有.end()-1
3⃣️刚开始没有设置max,导致答案部分正确,题目指出了distinct integers,只要其左边的都比它小,并且它的位置和排序后一样,只用满足这个条件,那它右边的元素一定都比它大。
1.如果只是大于左边最大元素,位序不一致,那一定在其右边还有比它小的元素
2.如果位序一致,可能左边有比它大的在滥竽充数,也不行。
#include<bits/stdc++.h>
using namespace std;
int main(){
set<int> s,res;
int v[100001];
int n,max=0;
cin>>n;
for(int i=0;i<n;i++){
int temp;
cin>>temp;
v[i]=temp;
s.insert(temp);
}
int i=0;
for(auto it=s.begin();it!=s.end();it++){
if(*it==v[i]&&v[i]>max)
res.insert(v[i]);
if(v[i]>max)
max=v[i];
++i;
}
cout<<res.size()<<endl;
int k=0;
for(auto it1=res.begin();it1!=res.end();it1++){
cout<<*it1;
++k;
if(k!=res.size())
cout<<" ";
}
cout<<endl;
return 0;
}