许诺 • 19小时前
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Part {
int l, w;
};
bool compare(const Part &a, const Part &b) {
if (a.l != b.l) {
return a.l < b.l;
} else {
return a.w < b.w;
}
}
int main() {
int N;
cin >> N;
vector<Part> parts(N);
for (int i = 0; i < N; ++i) {
cin >> parts[i].l >> parts[i].w;
}
sort(parts.begin(), parts.end(), compare);
vector<int> groups;
for (int i = 0; i < N; ++i) {
int w = parts[i].w;
auto it = lower_bound(groups.begin(), groups.end(), w, greater<int>());
if (it != groups.end()) {
*it = w;
} else {
groups.push_back(w);
}
}
cout << groups.size() << endl;
return 0;
}
评论:
请先登录,才能进行评论