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