fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define N 100011
  4. using namespace std;
  5. ll n;
  6. ll a[N],t[N],m;
  7. map<ll,ll> mp;
  8. void update(ll pos,ll val) {
  9. for (;pos<=m;pos+=pos&(-pos)) {
  10. t[pos]=max(t[pos],val);
  11. }
  12. }
  13. ll get(ll pos) {
  14. ll ans=0;
  15. for (;pos>0;pos-=pos&(-pos)) {
  16. ans=max(ans,t[pos]);
  17. }
  18. return ans;
  19. }
  20. int main()
  21. {
  22. ios_base::sync_with_stdio(false);
  23. cin.tie(0);
  24. cin >> n;
  25. for (ll i=1;i<=n;i++) {
  26. cin >> a[i];
  27. mp[a[i]]++;
  28. }
  29. for (auto &x:mp) {
  30. m++;
  31. x.second=m;
  32. }
  33. for (ll i=1;i<=n;i++) a[i]=mp[a[i]];
  34. ll ans=0;
  35. for (ll i=1;i<=n;i++) {
  36. update(a[i],1);
  37. update(a[i],get(a[i]-1)+1);
  38. }
  39. cout << get(m) << endl;
  40. }
  41.  
Success #stdin #stdout 0.01s 5312KB
stdin
Standard input is empty
stdout
0