#include<bits/stdc++.h>
using namespace std;
int n,a[2000005],l[2000005],s[2000005],t,m;
int main(){
ios::sync_with_stdio(0);cin.tie(0);
cin>>n;
for(int i=0;i<n;++i){cin>>a[i];a[i+n]=a[i];}
for(int i=2*n-1;i>=0;--i){
while(t&&a[s[t-1]]<=a[i])--t;
l[i]=t?1+l[s[t-1]]:1;
s[t++]=i;
if(i<n)m=max(m,l[i]);
}
cout<<m<<'\n';
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include<bits/stdc++.h> using namespace std; int n,a[2000005],l[2000005],s[2000005],t,m; int main(){ ios::sync_with_stdio(0);cin.tie(0); cin>>n; for(int i=0;i<n;++i){cin>>a[i];a[i+n]=a[i];} for(int i=2*n-1;i>=0;--i){ while(t&&a[s[t-1]]<=a[i])--t; l[i]=t?1+l[s[t-1]]:1; s[t++]=i; if(i<n)m=max(m,l[i]); } cout<<m<<'\n'; } |
English