运算符重载
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
class Node {
public:
int id;
int d;
int c;
int sum;
Node(int i, int d2, int c2) {
id = i;
d = d2;
c = c2;
sum = d2 + c2;
}
};
int n, low, high;
bool comp(const Node &a, const Node &b) {
if (a.sum > b.sum) {
return true;
} else if (a.sum < b.sum) {
return false;
} else {
if (a.d < b.d) {
return false;
} else if (a.d > b.d) {
return true;
} else {
return a.id < b.id;
}
}
}
bool operator < (const Node &a, const Node &b) {
if (a.d >= high && a.c >= high && b.d >= high && b.c >= high) {
return comp(a, b);
} else if (a.d >= high && a.c >= high) {
return true;
} else if (b.d >= high && b.c >= high) {
return false;
} else if (a.d >= high && a.c < high && b.d >= high && b.c < high) {
return comp(a, b);
} else if (a.d >= high && a.c < high) {
return true;
} else if (b.d >= high && b.c < high) {
return false;
} else if (a.d >= a.c && b.d >= b.c) {
return comp(a, b);
} else if (a.d >= a.c) {
return true;
} else if (b.d >= b.c) {
return false;
} else {
return comp(a, b);
}
}
int main() {
set<Node> s;
cin >> n >> low >> high;
int id, d, c;
for (int i = 0; i < n; i++) {
cin >> id >> d >> c;
if (d >= low && c >= low) {
Node node(id, d, c);
s.insert(node);
}
}
cout << s.size() << endl;
set<Node>::iterator it;
for (it = s.begin(); it != s.end(); it++) {
printf("%d %d %d\n", it->id, it->d, it->c);
}
return 0;
}