提交时间:2025-05-27 14:54:35
运行 ID: 193904
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct Member { int a, b; bool operator<(const Member& other) const { if (a != other.a) return a < other.a; return b > other.b; } }; int main() { int N; cin >> N; vector<Member> members(N); for (int i = 0; i < N; ++i) { cin >> members[i].a >> members[i].b; } // 按a升序,b降序排序 sort(members.begin(), members.end()); // 查找b的最长严格递减子序列 vector<int> tails; for (const auto& m : members) { auto it = lower_bound(tails.begin(), tails.end(), m.b, greater<int>()); if (it == tails.end()) { tails.push_back(m.b); } else { *it = m.b; } } cout << tails.size() << endl; return 0; }