#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <stack> using namespace std; int num[100001]; int Lmax[100001]; int Rmin[100001]; int main(){ int N; cin>>N; for (int i=1;i<=N;i++){ cin>>num[i]; } stack<pair<int,int>> sta; for (int i=1;i<=N;i++){ if (sta.empty()){ sta.push(make_pair(num[i],num[i])); } else{ pair<int,int> top; bool isok=false; while (!sta.empty()){ top=sta.top(); if (num[i]>=top.second){ sta.push(make_pair(num[i],num[i])); isok=true; break; } else{ sta.pop(); } } if (!isok) sta.push(make_pair(min(num[i],top.first),max(num[i],top.second))); } } cout<<sta.size(); } 36%感觉没什么问题