要用记录序号,调好了
```
#include <bits/stdc++.h>
using namespace std;
struct people{
string name;
int qm;
int cla;
char xsh;
char stu;
int cut;
int ma;
int w;//记录序号
};
bool cmp(people x,people y)
{
if(x.ma==y.ma) return x.w<y.w;
else return x.ma>y.ma;
}
int n,sum;
people peo[101];
int main(){
cin >>n;
for(int i=0;i<n;i++){
cin >>peo[i].name>>peo[i].qm>>peo[i].cla>>peo[i].xsh>>peo[i].stu>>peo[i].cut;
peo[i].w=i;
}
for(int i=0;i<n;i++){
if(peo[i].qm>80&&peo[i].cut>=1){//院士奖学金
peo[i].ma+=8000;
}
if(peo[i].qm>85&&peo[i].cla>80){//五四奖学金
peo[i].ma+=4000;
}
if(peo[i].qm>90){//成绩优秀奖
peo[i].ma+=2000;
}
if(peo[i].qm>85&&peo[i].stu=='Y'){//西部奖学金
peo[i].ma+=1000;
}
if(peo[i].cla>80&&peo[i].xsh=='Y'){//班级贡献奖
peo[i].ma+=850;
}
sum+=peo[i].ma;
}
sort(peo,peo+n,cmp);
cout <<peo[0].name<<endl<<peo[0].ma<<endl<<sum<<endl;
return 0;
}
```
by xwx123456 @ 2024-02-19 12:35:20
考虑一样奖学金的时候优先输出序号靠前的学生
bool cmp(C x, C y)
{
if (x.tot == y.tot)
return x.num < y.num;
return x.tot > y.tot;
}
by leomeesi10 @ 2024-03-13 22:14:02