P1093 奖学金
给出学生的学号,语数英成绩。按照总分高的优先、语文分数高的优先和学号小的优先的三个排序原则对所有学生成绩进行排序。打印前五名。
按照题目梗概解题即可。
#include
#include
using namespace std;
struct student{
int no, chinese, math, english, grade;
}s[301];
bool cmp(student a, student b){
if(a.grade != b.grade) return a.grade > b.grade;
else if(a.chinese != b.chinese) return a.chinese > b.chinese;
else return a.no < b.no;
}
int main(){
int n;
cin >> n;
for(int i = 0;i < n;i++){
cin >> s[i].chinese >> s[i].math >> s[i].english;
s[i].no = i + 1;
s[i].grade = s[i].chinese + s[i].math + s[i].english;
}
sort(s, s + n, cmp);
for(int i = 0;i < 5;i++){
cout << s[i].no << " " << s[i].grade << endl;
}
return 0;
}