2019年1月31日
9:29
尽量用scanf输入
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdio>
using namespace std;
struct P
{
int ID_Number, Virtue_Grade, Talent_Grade, Sum_Grade, flag;
};
P x;
vector<P> p;
bool cmp(P a, P b)
{
if(a.flag != b.flag)
return a.flag < b.flag;
else if(a.Sum_Grade != b.Sum_Grade)
return a.Sum_Grade > b.Sum_Grade;
else if(a.Virtue_Grade != b.Virtue_Grade)
return a.Virtue_Grade > b.Virtue_Grade;
else
return a.ID_Number < b.ID_Number;
}
int main()
{
int N, H, L;
while(cin >> N >> L >> H)
{
for(int i = 0; i < N; i++)
{
scanf("%d%d%d", &x.ID_Number, &x.Virtue_Grade, &x.Talent_Grade);
//cin >> x.ID_Number >> x.Virtue_Grade >> x.Talent_Grade;
x.Sum_Grade = x.Talent_Grade + x.Virtue_Grade;
if(x.Virtue_Grade < L || x.Talent_Grade < L)
continue;
else if(x.Virtue_Grade >= H && x.Talent_Grade >= H)
x.flag = 1;
else if(x.Virtue_Grade >= H && x.Talent_Grade < H)
x.flag = 2;
else if(x.Virtue_Grade >= x.Talent_Grade && x.Virtue_Grade < H && x.Talent_Grade < H)
x.flag = 3;
else
x.flag = 4;
p.push_back(x);
}
//cout << p.size() << endl;
printf("%d\n", p.size());
sort(p.begin(), p.end(), cmp);
for(int j = 0; j < p.size(); j++)
{
printf("%d %d %d\n", p[j].ID_Number, p[j].Virtue_Grade, p[j].Talent_Grade);
//cout << p[j].ID_Number << " " << p[j].Virtue_Grade << " " << p[j].Talent_Grade << endl;
}
p.clear();
}
return 0;
}