towers.cpp (632B)
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 using ui = unsigned int; 6 using l = long; 7 using ul = unsigned long; 8 using ll = long long; 9 using ull = unsigned long long; 10 11 using vi = vector<int>; 12 using vui = vector<ui>; 13 using vl = vector<l>; 14 using vul = vector<ul>; 15 using vll = vector<ll>; 16 using vull = vector<ull>; 17 18 void solve() 19 { 20 int n; 21 cin >> n; 22 int k; 23 multiset<int> a; 24 for (int i = 0; i < n; i++) { 25 cin >> k; 26 auto it = a.upper_bound(k); 27 if (it == a.end()) { 28 a.insert(k); 29 } else { 30 a.erase(it); 31 a.insert(k); 32 } 33 } 34 35 cout << a.size() << "\n"; 36 } 37 38 int main() 39 { 40 ios::sync_with_stdio(0); 41 cin.tie(0); 42 solve(); 43 }