#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;
}
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; } |
English