P1051 谁拿了最多奖学金 (简单排序)
题意:求最多奖金的学生姓名和奖学金,以及所有人的奖学金总数。
思路:结构体排序即可。
#include<bits/stdc++.h>
using namespace std;
struct p{
string s;
int a,b;
char c,d;
int e,id,sum;
}f[105];
bool cmp(p x,p y){
return x.sum==y.sum?x.id<y.id:x.sum>y.sum;
}
int main(){
int n,tot=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>f[i].s>>f[i].a>>f[i].b>>f[i].c>>f[i].d>>f[i].e,f[i].sum=0,f[i].id=i;
if(f[i].a>80&&f[i].e>0) f[i].sum+=8e3;
if(f[i].a>85&&f[i].b>80) f[i].sum+=4e3;
if(f[i].a>90) f[i].sum+=2e3;
if(f[i].a>85&&f[i].d=='Y') f[i].sum+=1e3;
if(f[i].b>80&&f[i].c=='Y') f[i].sum+=850;
tot+=f[i].sum;
}
sort(f+1,f+n+1,cmp);
cout<<f[1].s<<endl;
printf("%d\n%d\n",f[1].sum,tot);
return 0;
}