题目中“如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。”因此用id存出现的顺序sort时若sum相同,比较id。
```cpp
#include<bits/stdc++.h>
using namespace std;
struct money{
string name,stu,west;
int ender,cla,book,sum,id;
};
int cnt(money a,money b){
if(a.sum!=b.sum)return a.sum>b.sum;
else return a.id<b.id;
}
int n,summ;
money a[1000];
int main() {
cin>>n;
for(int i=1;i<=n;i++){
a[i].id=i;
cin>>a[i].name>>a[i].ender>>a[i].cla>>a[i].stu>>a[i].west>>a[i].book;
a[i].sum=0;
if(a[i].ender>80&&a[i].book>0)
a[i].sum+=8000;
if(a[i].ender>85&&a[i].cla>80)
a[i].sum+=4000;
if(a[i].ender>90)
a[i].sum+=2000;
if(a[i].ender>85&&a[i].west=="Y")
a[i].sum+=1000;
if(a[i].cla>80&&a[i].stu=="Y")
a[i].sum+=850;
summ+=a[i].sum;
}
sort(a+1,a+1+n,cnt);
cout<<a[1].name<<endl<<a[1].sum<<endl<<summ;
return 0;
}
```
by Jadonyzx @ 2024-03-22 15:21:53