题目描述
某考试成绩计算方式为:综合成绩=笔试成绩(满分50分)+面试成绩(满分35分)+专业科目成绩(满分15分),现给出几位考生的单项成绩,要求按综合成绩从高到低的顺序输出考生的考号和综合成绩。如果综合成绩相同,就将考号小的排在前面。
输入
第1行有1个整数,表示考生的人数n(1≤n≤100)。
接下来有n行,每行包含4个正整数,分别表示考生考号、笔试成绩(<=50)、面试成绩(<=35)和专业科目成绩(<=15),两数之间用一个空格分隔。
数据保证考号不相同。
输出
共n行,
每行包含两个整数,分别是考生的考号和综合成绩,两数之间用一个空格分隔。
#include<bits/stdc++.h>
using namespace std;
struct S{
int x;
int f;
};
bool cmp(S st1,S st2){
if(st1.f==st2.f){
return st1.x<st2.x;
}
return st1.f>st2.f;
}
int main(){
int n,m,z,y;
S a[1001];
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x>>y>>z>>m;
a[i].f=m+z+y;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].x<<" "<<a[i].f<<endl;
}
}