0
已解决
#include <bits/stdc++.h>
using namespace std;
struct ld{
string name;
int age,yi,er,san,si;
int id;
}a[10001];
bool cmp(ld a,ld b){
if(a.yi+a.er+a.san+a.si!=b.yi+b.er+b.san+b.si ) return a.yi+a.er+a.san+a.si>b.yi+b.er+b.san+b.si;
return a.id>b.id;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].age>>a[i].yi>>a[i].er>>a[i].san>>a[i].si;
a[i].id=i;
}
for(int i=1;i<=n;i++){
cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].yi+a[i].er+a[i].san+a[i].si<<endl;
}
sort(a+1,a+1+n,cmp);
cout<<a[1].name;
return 0;
}
0
已采纳
在你输出的最后一个名字,也就是总分最高的同学姓名,你没发现你连样例都没过吗,样例是Zhangsan,你输出Wangwu,注意,最先输入是学号越小越好,把你的return a.id>b.id改成return a.id<b.id就ac了
0
0
0
0
0
0