Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////////////////////////
  2. // Andrey Odintsov
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6. #define mp make_pair
  7. #define pb push_back
  8. #define FAST_IO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
  9. #define FILE_IO(x) freopen((string(x) + ".in").c_str(), "r", stdin); freopen((string(x) + ".out").c_str(), "w", stdout)
  10. #define f first
  11. #define s second
  12. #define x1 x1qwer
  13. #define y1 y1qwer
  14. #define foreach(it, v) for (auto it : v)
  15. #define rep(it, n) for (int it = 0; it < n; ++it)
  16. #define forin(it, l, r) for (int it = l; it < r; ++it)
  17. #define all(x) x.begin(), x.end()
  18. #define sqr(x) ((x) * (x))
  19.  
  20. typedef long long ll;
  21. typedef unsigned long long ull;
  22. typedef long double ld;
  23. typedef pair<int, int> pii;
  24. typedef pair<ll, ll> pll;
  25. const double DINF = numeric_limits<double>::infinity();
  26. const int MOD = 1e9 + 7;
  27. const double EPS = 1e-7;
  28. ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
  29. mt19937 mmtw(MOD);
  30. ll rnd(ll x, ll y) { static uniform_int_distribution<ll> d; return d(mmtw) % (y - x + 1) + x; }
  31. template <class T> T binpow(T n, T k) { if (k == 1) return n; if (k & 1) return binpow(n, k - 1) * n; T a = binpow(n, k / 2); return a * a; }
  32. template <class T> T fact(T n) { if (n == 1) return 1; return n * fact(n - 1); }
  33. ////////////////////////////////////////////////////////////////////////////////////////////////
  34.  
  35. const int MAXN = 5005;
  36. int n;
  37. int a[MAXN];
  38.  
  39. int main() {
  40.     cin >> n;
  41.     rep(i, n) {
  42.         cin >> a[i];
  43.     }
  44.     sort(a, a + n);
  45.     multiset<int> s;
  46.     s.insert(a[n - 1]);
  47.     for (int i = n - 2; i >= 0; --i) {
  48.         if (s.upper_bound(a[i]) == s.end()) {
  49.             s.insert(a[i]);
  50.         } else {
  51.             s.erase(s.upper_bound(a[i]));
  52.             s.insert(a[i]);
  53.         }
  54.     }
  55.     cout << s.size() << endl;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement