标签:
描述 某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同:
1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;
2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;
3) 成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可获得;
4) 西部奖学金,每人1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;
5) 班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;
只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。
现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。
1 4 YaoLin 87 82 Y N 0 ChenRuiyi 88 78 N Y 1 LiXin 92 88 N N 0 ZhangQin 83 87 Y N 1
ChenRuiyi 9000 28700
正确代码如下:
#include<iostream> #include<stdio.h> #include<string.h> #include<string.h> using namespace std; struct node { string s1; int x1,x2; char s2,s3; int x3; int sum; }; int main() { node a[110]; int test,n; cin>>test; while(test--) { cin>>n; for(int i=0;i<n;i++) cin>>a[i].s1>>a[i].x1>>a[i].x2>>a[i].s2>>a[i].s3>>a[i].x3; int sum1=0,sum2=0; string ch; for(int i=0;i<n;i++) { a[i].sum=0; if(a[i].x1>80&&a[i].x3>=1) a[i].sum+=8000; if(a[i].x1>85&&a[i].x2>80) a[i].sum+=4000; if(a[i].x1>90) a[i].sum+=2000; if(a[i].x1>85&&a[i].s3==‘Y‘) a[i].sum+=1000; if(a[i].x2>80&&a[i].s2==‘Y‘) a[i].sum+=850; sum1+=a[i].sum; if(a[i].sum>sum2) { ch=a[i].s1; sum2=a[i].sum; } } cout<<ch<<endl; cout<<sum2<<endl; cout<<sum1<<endl; } return 0; }
标签:
原文地址:http://www.cnblogs.com/NYNU-ACM/p/4248947.html