洛谷P1093 奖学金
https://www.luogu.org/problem/P1093
#include <bits/stdc++.h> using namespace std; struct Node{ int nb,yu,shu,yin,sum; //分别为学号,语文,数学,英语,总成绩 }node[500]; int cmp(Node x,Node y){ if(x.sum!=y.sum)return x.sum>y.sum; //如果总分不同,总分高的在前 else if(x.sum==y.sum&&x.yu!=y.yu)return x.yu>y.yu; //如果总分相同但语文成绩不同,语文成绩高的在前 else return x.nb<y.nb; //都相同,学号小的在前 } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ node[i].nb=i; cin>>node[i].yu>>node[i].shu>>node[i].yin; node[i].sum=node[i].yu+node[i].shu+node[i].yin; } sort(node+1,node+n+1,cmp); for(int i=1;i<=5;i++) cout<<node[i].nb<<" "<<node[i].sum<<endl; return 0; }