#include<iostream>
#include<vector>
int n,a;
std::vector<int> nas;
std::vector<std::pair<int,int> > rec;
int main(){
std::cin>>n;
for(int i=0;i<n;i++){
std::cin>>a;
nas.emplace_back(a);
}
rec.emplace_back(0,0);
for(int j=0;j<2;j++)
for(int i=0;i<n;i++){
int dl=0;
while(rec.size()>0 && rec.back().first<nas[i]){
dl=rec.back().second;
rec.pop_back();
}
dl++;
//std::cout<<dl<<std::endl;
if(rec.size()>0 && rec.back().second==dl){
if(rec.back().first>nas[i])
rec.back().first=nas[i];
}else
rec.emplace_back(nas[i],dl);
}
std::cout<<rec.front().second<<std::endl;
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<iostream> #include<vector> int n,a; std::vector<int> nas; std::vector<std::pair<int,int> > rec; int main(){ std::cin>>n; for(int i=0;i<n;i++){ std::cin>>a; nas.emplace_back(a); } rec.emplace_back(0,0); for(int j=0;j<2;j++) for(int i=0;i<n;i++){ int dl=0; while(rec.size()>0 && rec.back().first<nas[i]){ dl=rec.back().second; rec.pop_back(); } dl++; //std::cout<<dl<<std::endl; if(rec.size()>0 && rec.back().second==dl){ if(rec.back().first>nas[i]) rec.back().first=nas[i]; }else rec.emplace_back(nas[i],dl); } std::cout<<rec.front().second<<std::endl; return 0; } |
English