1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;
const int MX=2000100;
int t,n,m,mx,a[MX],s[MX],dp[MX];
int main() {
  scanf("%d",&n);
  for (int i=0; i<n; i++) {
    scanf("%d",&a[i]);
    a[n+i]=a[i];
  }
  for (int i=2*n-1; i>=0; i--) {
    for (; m>0 && a[s[m]]<=a[i]; --m);
    dp[i]=m?dp[s[m]]+1:1;
    if (i<=n) mx=max(mx,dp[i]);
    s[++m]=i;
  }
  printf("%d\n",mx);
  return 0;
}