1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,w=0,i;
    cin>>n;
    vector<int>v(2*n);
    for(i=0;i<n;++i){
        cin>>v[i];
        v[i+n]=v[i];
    }
    vector<int>ile2(2*n,1),wiekszy(2*n,-1);
    stack<int>s;
    for(i=2*n-1;i>=0;--i){
        while(!s.empty()&&v[s.top()]<=v[i])s.pop();
        if(!s.empty()&&s.top()<i+n)wiekszy[i]=s.top();
        s.push(i);
    }
    for(i=2*n-1;i>=0;--i){
        if(wiekszy[i]!=-1)ile2[i]=1+ile2[wiekszy[i]];
    }
    for(i=0;i<n;++i)w=max(w,ile2[i]);
    cout<<w;
    return 0;
}