大雨吃小鱼 (单调栈)
测试链接:https://www.nowcoder.com/practice/77199defc4b74b24b8ebf6244e1793de
题解
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int stk[N][2];
int a[N];
int main()
{
int n;
cin>>n;
int r=0;
int t=0;
for(int i=0;i<n;i++)cin>>a[i];
for(int i=n-1;i>=0;i--)
{
int curt=0;
while(r>0&a[stk[r-1][0]]<a[i])
{
curt = max(curt+1,stk[--r][1]);
}
stk[r][0]=i;
stk[r++][1]=curt;
t = max(t,curt);
}
cout<<t<<endl;
return 0;
}

浙公网安备 33010602011771号