Run ID:45406
提交时间:2023-03-24 14:51:40
#include <iostream> using namespace std; const int N=305; int n; struct Student{ int number; int chinese; int math; int english; int sum; }stu[N]; bool cmp(Student a, Student b){ //如果a的排名在b的前面,返回true if(a.sum==b.sum){ if(a.chinese == b.chinese){ return a.number < b.number; } else return a.chinese > b.chinese; } else return a.sum > b.sum; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>stu[i].chinese>>stu[i].math>>stu[i].english; stu[i].number = i; stu[i].sum = stu[i].chinese + stu[i].math + stu[i].english; } for(int i=1;i<n;i++){ bool flag = false; for(int j=1;j<=n-i;j++){ if(!cmp(stu[j],stu[j+1])){ swap(stu[j],stu[j+1]); flag = true; } } if(!flag)break; } for(int i=1;i<=5;i++){ cout<<stu[i].number<<' '<<stu[i].sum<<endl; } return 0; }