注:两成绩均小于h的人群中,virtue>=talent的fool men,排名在virtue < talent的人群之前
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct Peo {
int id;
int talent;
int virtue;
int total;
int level;
} Peo;
vector<Peo> v;
int n, l, h;
bool cmp(Peo a, Peo b);
int main(int argc, char *argv[]) {
int n, l, h;
scanf("%d %d %d", &n, &l, &h);
int i;
for (i = 0; i < n; i++) {
Peo p;
scanf("%d %d %d", &p.id, &p.virtue, &p.talent);
p.total = p.talent + p.virtue;
if (p.talent >= h && p.virtue >= h) p.level = 1;
else if (p.talent < h && p.virtue >= h) p.level = 2;
else if (p.talent < h && p.virtue < h && p.talent <= p.virtue) p.level = 3;
else p.level = 4;
if (p.talent >= l && p.virtue >= l) {
v.push_back(p);
}
}
sort(v.begin(), v.end(), cmp);
printf("%d\n", int(v.size()));
for (i = 0; i < v.size(); i++) {
printf("%08d %d %d\n", v[i].id, v[i].virtue, v[i].talent);
}
return 0;
}
bool cmp(Peo a, Peo b) {
if (a.level < b.level) return true;
else if (a.level == b.level && a.total > b.total) return true;
else if (a.level == b.level && a.total == b.total && a.virtue > b.virtue) return true;
else if (a.level == b.level && a.total == b.total && a.virtue == b.virtue && a.id < b.id) return true;
return false;
}