第九个测试点没过,其它都过了

P1051 [NOIP2005 提高组] 谁拿了最多奖学金

要用记录序号,调好了 ``` #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


|