首页 > 学院 > 开发设计 > 正文

P1051 谁拿了最多奖学金

2019-11-14 09:38:59
字体:
来源:转载
供稿:网友

题目描述

发放的奖学金共有五种,获取的条件各自不同:(1)8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;(2)4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;(3)2000元,期末平均成绩高于90分(>90)的学生均可获得;(4)1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;(5)850元,班级评议成绩高于80分(>80)的学生干部均可获得;计算哪些同学获得的奖金总数最高。

样例输入

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

样例输出

ChenRuiyi900028700

思路

O(n)按题意模拟,排序var a,e,d:array[1..1000]of string; b,c,f,g:array[1..1000]of longint; n,k,i,j,max,ans:longint; s:string;begin readln(n); for i:=1 to n do begin readln(s); k:=pos(' ',s); a[i]:=copy(s,1,k-1); delete(s,1,k); k:=pos(' ',s); val(copy(s,1,k-1),b[i]);delete(s,1,k); k:=pos(' ',s); val(copy(s,1,k-1),c[i]);delete(s,1,k); k:=pos(' ',s); d[i]:=copy(s,1,k-1); delete(s,1,k); k:=pos(' ',s); e[i]:=copy(s,1,k-1);delete(s,1,k); val(copy(s,1,k-1),f[i]); if (b[i]>80)and(f[i]>0) then g[i]:=g[i]+8000; if (b[i]>85)and(c[i]>80) then g[i]:=g[i]+4000; if (b[i]>90) then g[i]:=g[i]+2000; if (b[i]>85)and(e[i]='Y') then g[i]:=g[i]+1000; if (c[i]>80)and(d[i]='Y') then g[i]:=g[i]+850; end; max:=0; for i:=1 to n do begin if max<g[i] then begin max:=g[i]; j:=i; end; end; writeln(a[j]); writeln(g[j]); for i:=1 to n do ans:=ans+g[i]; writeln(ans);end.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表