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
28
29
30
#include <cstdio>
#include <algorithm> 
#include <set>

using namespace std;

#define MAX 1000100

int n;
int a[MAX];
int r[MAX];

int main() {
    scanf("%d",&n);
    for(int i=0;i<n;i++) {
        scanf("%d",&a[i]);
    }
    auto *it = std::max_element(&a[0], &a[n]);
    int idx = std::distance(&a[0], it);
    set<int> s;
    s.insert(a[idx]);
    for(int i=(idx-1+n)%n; i!=idx; i=(i-1+n)%n) {
        s.erase(s.begin(), s.upper_bound(a[i]));
        s.insert(a[i]);
        r[i] = s.size();
    }
    auto *itr = std::max_element(&r[0], &r[n]);
    printf("%d\n",*itr);

}