Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("gogosi.in");
- ofstream fout("gogosi.out");
- const int Nmax=1000005;
- int a[Nmax],st[Nmax],top,n;
- inline int CB(int x)
- {
- int stg=1,drp=top,poz=0,mij;
- while(stg<=drp)
- {
- mij=(stg+drp)/2;
- if(st[mij]<=x)
- {
- poz=mij;
- drp=mij-1;
- }
- else stg=mij+1;
- }
- return poz;
- }
- int main()
- {
- fin>>n;
- for(int i=1;i<=n;i++)
- fin>>a[i];
- top=1;
- st[top]=a[1];
- for(int i=2;i<=n;i++)
- {
- int x=a[i];
- if(x<st[top])
- st[++top]=x;
- else
- {
- int y=x;
- x=CB(x);
- st[x]=y;
- }
- }
- fout<<top<<"\n";
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment