首页 > 其他 > 详细

洛谷P1051 谁拿了最多奖学金

时间:2019-10-21 21:09:33      阅读:75      评论:0      收藏:0      [点我收藏+]

https://www.luogu.org/problem/P1051

#include<bits/stdc++.h>
using namespace std;
struct node {
    string xm;//姓名
    int qm,bj;//期末平均成绩,班级评议成绩
    char bgb,xb;//是否是学生干部,是否是西部省份学生
    int lw;//发表的论文数
    int ans;//个人所获的奖金数
    int num;//序号数,因为题目要求两个人所获的奖金数相同时,输出先出现的,即序号较靠前的(较小的)
} a[101];
int n,tot=0;//tot记录总的钱的数目 
bool cmp(node x,node y) {
    if(x.ans==y.ans)return x.num<y.num;// 奖学金数从大到小排序
    else return x.ans>y.ans;//奖金相同时按序号数从小到大排序
}
int main() {
    scanf("%d",&n);
    for(int i=1; i<=n; i++) {
        cin>>a[i].xm>>a[i].qm>>a[i].bj>>a[i].bgb>>a[i].xb>>a[i].lw;
        if(a[i].qm>80&&a[i].lw>=1)
            a[i].ans+=8000;
        if(a[i].qm>85&&a[i].bj>80)
            a[i].ans+=4000;
        if(a[i].qm>90)
            a[i].ans+=2000;
        if(a[i].xb==Y&&a[i].qm>85)
            a[i].ans+=1000;
        if(a[i].bj>80&&a[i].bgb==Y)
            a[i].ans+=850;
        a[i].num=i;
        tot+=a[i].ans;//tot为总的奖学金数
    }
    sort(a+1,a+n+1,cmp);
    cout<<a[1].xm<<endl<<a[1].ans<<endl<<tot;
    return 0;
}

 

 

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n,score1,score2,sum=0,max=0,total=0,x,i;
    char a,b;
    string name,maxn;
    cin>>n;
    for(i=1; i<=n; i++) {
        cin>>name>>score1>>score2>>a>>b>>x;
        if(score1>80 && x>0)//判断是否获得院士奖学金
            sum+=8000;
        if(score1>85 && score2>80)//判断是否获得五四奖学金
            sum+=4000;
        if(score1>90)//判断是否获得成绩优秀奖
            sum+=2000;
        if(score1>85 && b==Y)//判断是否获得西部奖学金
            sum+=1000;
        if(score2>80 && a==Y)//判断是否获得班级贡献奖
            sum+=850;
        total+=sum;//累加奖学金
        if(sum>max)//找出最牛学生
            maxn=name,max=sum;//sum的用处
        sum=0;
    }
    cout<<maxn<<endl<<max<<endl<<total;
    return 0;
}

 

洛谷P1051 谁拿了最多奖学金

原文:https://www.cnblogs.com/QingyuYYYYY/p/11715615.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!