Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<fstream>
- using namespace std;
- ifstream cin("sclm2.in");
- ofstream cout("sclm2.out");
- int v[100005],L[100005],best[100005],n,poz,maxim,nr;
- int caut(int x)
- {
- int p=0,u=nr,m;
- m=(p+u)/2;
- while(p<=u)
- {
- if(v[L[m]]<x && v[L[m+1]]>=x) return m;
- else if(v[L[m+1]]<x) {p=m+1; m=(p+u)/2;}
- else {u=m-1; m=(p+u)/2;}
- }
- return nr;
- }
- int main()
- {
- cin>>n;
- for(int i=1;i<=n;i++) cin>>v[i];
- cin.close();
- nr=1; best[1]=L[1]=1;
- for(int i=2;i<=n;i++)
- {
- poz=caut(v[i]);
- best[i]=poz+1;
- L[poz+1]=i;
- if(nr<poz+1) nr=poz+1;
- }
- for(int i=1;i<=n;i++)
- if(maxim<best[i])
- maxim=best[i];
- cout<<maxim<<'\n';
- cout.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement