#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%感觉没什么问题
点赞 评论

相关推荐

牛客网
牛客企业服务