题意中文,略过不赘诉。
先给考生分类,然后按类排就简单很多了,知道要分类,具体怎么分类却不知道,然后对sort函数一顿操作,见识少,菜狗QAQ
#include<iostream>
#include<cstring>
#include<cmath>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct student
{
int id;
int de;
int cai;
int sum; //总分
int level; //等级
}stu[100010];
bool cmp(student s1, student s2)
{
if(s1.level != s2.level)
return s1.level < s2.level;
else if(s1.sum != s2.sum)
return s1.sum > s2.sum;
else if(s1.de != s2.de)
return s1.de > s2.de;
else
return s1.id < s2.id;
}
int main()
{
int n, l, h;
scanf("%d %d %d", &n, &l, &h);
int m = n;
for(int i = 0; i < n; i++)
{
scanf("%d%d%d", &stu[i].id, &stu[i].de, &stu[i].cai);
stu[i].sum = stu[i].de + stu[i].cai;
if(stu[i].cai < l || stu[i].de < l)
{
stu[i].level = 5;
m--;
}
else if(stu[i].cai >= h && stu[i].de >= h)
stu[i].level = 1;
else if(stu[i].de >= h && stu[i].cai < h)
stu[i].level = 2;
else if(stu[i].cai < h && stu[i].de < h && stu[i].cai <= stu[i].de)
stu[i].level = 3;
else
stu[i].level = 4;
}
sort(stu, stu + n, cmp);
printf("%d\n", m);
for(int i = 0; i < m; i++)
{
printf("%d %d %d\n", stu[i].id, stu[i].de, stu[i].cai);
}
return 0;
}