由于校赛,OJ将于本周五(5.17)到周日停止服务

Problem 1784. -- 奖学金

1784: 奖学金

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 208  Accepted: 127
[Submit][Status][Web Board]

Description

某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有3种,获取的条件各自不同:
1)五四奖学金,每人4000元,期末平均成绩高于85分,并且班级评议成绩高于80分;
2)成绩优秀奖,每人2000元,期末平均成绩高于90分;
3)班级贡献奖,每人850元,班级评议成绩高于80分的学生干部;
只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。
例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。
现在给出若干学生(不超过100)的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。
程序中将学生的相关数据设计为一个结构体student,其成员包括姓名(char name[9]),期末考试成绩(int score),班级评议成绩(int discussion)和是否学生干部(char cadre)。
实现读入所有学生的相关数据到结构体数组中,然后统计每个学生获得的奖学金,接着统计获得最高奖学金的学生及相关信息输出。

注意:main函数已经给定(如下所示)。

           请将程序补充完整。

           提交时只需要提交自己补充的代码部分,不需要提交给定的main函数的代码部分。

#include<stdio.h>
int main()
{
    int n,max,total;   //max用来记录最高奖学金,total用来记录所有学生总的奖学金
    char name[9];  //name用来记录奖学金最高的学生姓名
    struct student stu[100];
    while(scanf("%d",&n)!=EOF)
    {
        input(stu,n);
        solved(stu,n,name,&max,&total);   //name,max和total用来记录所求答案
        printf("%s %d %d\n",name,max,total);
    }
    return 0;
}

Input

包含多组测试数据,每组测试数据第一行包括一个正整数n,表示学生人数。
接下来的n行,每行表示一个学生的数据。从左到右依次为姓名,是否是学生干部,期末平均成绩,班级评议成绩。
是否学生干部用一个字符来表示,Y表示是学生干部,N表示不是。
相邻数据之间用一个空格隔开。

Output

每组测试数据输出占1行。每行输出三个数据,数据之间用空格隔开。
第一个数据为获得奖金最多的学生姓名;
第二个数据为这名学生获得的奖金数;
第三个数据为所有学生获得的奖学金总数。
如果有两位或两位以上的学生获得的奖金最多,输出最早输入的学生的姓名。

Sample Input

4
YaoLin Y 87 82
ChenRuiyi N 88 78
LiXin N 92 88
ZhangQin Y 83 87

Sample Output

LiXin 6000 11700

[Submit][Status][Web Board]