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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <bits/stdc++.h>
#include <cmath>
#define ll long long
#define fir first
#define sec second
using namespace std;
ll x;
vector <int> vec2;
int wynik[1000005];
ll odp=0;
void dostosuj(int a){
ll p;
ll l;
ll sr;
l=0;
p=1;
while(p!=l){

}



}
int main()
{

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>x;
    vector <int> vec(x);
    for(int i=0;i<x;i++){
        cin>>vec[i];
    }
ll m=0;
ll j;
    for(int i=0;i<x;i++){
        if(vec[i]>m){
            j=i;
            m=vec[i];
        }
    }
for(int i=0;i<=j;i++){
    vec2.push_back(vec[0]);
    vec.erase(vec.begin());
}
for(int i=0;i<vec2.size();i++){
    vec.push_back(vec2[i]);
}
wynik[0]=-1;
    for(int i=1;i<=x+1;i++){
        wynik[i]=1000005;


    }
    ll a,b;
    ll n;
    for(int i=0;i<x;i++){
      a=0;
      b=x;
      while(b-1!=a && b!=a && a<b){
       n=(a+b)/2;
       if(wynik[n]<vec[i]){
        a=n;
       }else{
       b=n;
       }
      }
      wynik[b]=vec[i];
    }
    ll p=0;
    while(wynik[p]!=1000005 ){
        p++;
    }
    cout<<p-1;
}