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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define all(a) a.begin(),a.end()
#define v vector
#define pb push_back
#define LB lower_bound

v<int>akt;
int n;

void refill(int n){
    while(akt[n] and n){
        akt[n]=0;
        n--;
    }
}

int low(int i, int n){
    if(akt[i]==n) return i;
    return i-1;
}

int ind(int i){
    if(i<0) return n+i;
    return i;
}

int main(){ios_base::sync_with_stdio(0);cin.tie(0);
    int pom=-1;
    cin >> n;
    akt.resize(n,0);
    v<int>kor(n);
    for(int i=0;i<n;i++){
        cin >> kor[i];
        if(kor[i]>=akt[n-1]){
            pom=i;
            akt[n-1]=kor[i];
        }
    }
    int x=0;
    int wyn=0;
    
    for(int i=pom-1;x<n;i--){
        int z=LB(all(akt), kor[ind(i)])-akt.begin();
        z=low(z, kor[ind(i)]);
        refill(z);
        akt[z]=kor[ind(i)];
        wyn=max(wyn,n-z);
        x++;
    }
    cout << wyn;
    
    
    
    
    return 0;
}