#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct student
{
int talent,virtue,sum;
char id[10];
int flag;//区别是第几类
}stu[100100];
bool cmp(student a, student b)
{
if (a.flag != b.flag) return a.flag < b.flag;
else if (a.sum != b.sum) return a.sum > b.sum;
else if (a.virtue != b.virtue) return a.virtue > b.virtue;
else return strcmp(a.id, b.id) < 0;//按照字典序排列
}
int main()
{
int n,l,h;
int count=0;//总参加排名人数以及各个梯队人数
scanf("%d %d %d", &n, &l, &h);
for (int i = 0; i < n; i++)
{
scanf("%s %d %d", stu[i].id, &stu[i].virtue, &stu[i].talent);
stu[i].sum = stu[i].talent + stu[i].virtue;
if (stu[i].talent >= h && stu[i].virtue >= h)
{
stu[i].flag = 1;
count++;
}//第一梯队
else if (stu[i].talent >= l && stu[i].virtue >= h) {
stu[i].flag = 2;
count++;
}//第二梯队
else if (stu[i].talent >= l && stu[i].virtue >= l && stu[i].talent <= stu[i].virtue)
{
stu[i].flag = 3;
count++;
}//第三梯队
else if (stu[i].talent >= l && stu[i].virtue >= l)
{
stu[i].flag = 4;
count++;
}//第四梯队
else stu[i].flag = 5;
}
sort(stu, stu + n, cmp);
printf("%d\n", count);
for (int i = 0; i < count; i++)
{
printf("%s %d %d\n", stu[i].id, stu[i].virtue, stu[i].talent);
}
return 0;
}
A1062 Talent and Virtue (25 分)
最新推荐文章于 2023-03-15 23:10:15 发布