tanasaradu

Untitled

Nov 26th, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin("gogosi.in");
  4. ofstream fout("gogosi.out");
  5. const int Nmax=1000005;
  6. int a[Nmax],st[Nmax],top,n;
  7. inline int CB(int x)
  8. {
  9. int stg=1,drp=top,poz=0,mij;
  10. while(stg<=drp)
  11. {
  12. mij=(stg+drp)/2;
  13. if(st[mij]<=x)
  14. {
  15. poz=mij;
  16. drp=mij-1;
  17. }
  18. else stg=mij+1;
  19. }
  20. return poz;
  21. }
  22. int main()
  23. {
  24. fin>>n;
  25. for(int i=1;i<=n;i++)
  26. fin>>a[i];
  27. top=1;
  28. st[top]=a[1];
  29. for(int i=2;i<=n;i++)
  30. {
  31. int x=a[i];
  32. if(x<st[top])
  33. st[++top]=x;
  34. else
  35. {
  36. int y=x;
  37. x=CB(x);
  38. st[x]=y;
  39. }
  40. }
  41. fout<<top<<"\n";
  42. fin.close();
  43. fout.close();
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment