AC

许诺  •  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;

}


评论:

请先登录,才能进行评论