第九个测试点挂了,但下载下来数据测试与正确输出一样

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

O2也关了
by 1531rzh @ 2024-01-19 10:40:39


@[1531rzh](/user/1005766) 题目上说了,在奖金一样的情况下,输出先输进来的人,所以需要在输入时给每个学生标上编号,在排序时,如果两位学生奖金一样,就把编号靠前的学生排在前面 ### 代码如下 ```cpp #include<bits/stdc++.h> using namespace std; struct RY{ string name,gb,dx; int qm,py,lw,zj,num; }a[100000]; bool cmp(RY a,RY b){ if(a.zj!=b.zj) { return a.zj>b.zj; } return a.num<b.num; } int n,ans; int main(){ cin>>n; for(int i=0;i<n;i++) { a[i].num=i; cin>>a[i].name>>a[i].qm>>a[i].py>>a[i].gb>>a[i].dx>>a[i].lw; if(a[i].lw>=1 and a[i].qm>80) { a[i].zj+=8000; } if(a[i].qm>85 and a[i].py>80) { a[i].zj+=4000; } if(a[i].qm>90) { a[i].zj+=2000; } if(a[i].dx=="Y" and a[i].qm>85) { a[i].zj+=1000; } if(a[i].gb=="Y" and a[i].py>80) { a[i].zj+=850; } ans+=a[i].zj; } sort(a,a+n,cmp); cout<<a[0].name<<endl<<a[0].zj<<endl<<ans; return 0; } ```
by hjw100516 @ 2024-01-19 11:31:04


@[hjw100516](/user/911002) 懂啦,谢谢
by 1531rzh @ 2024-01-19 11:46:43


|