题目描述
发放的奖学金共有五种,获取的条件各自不同:
(1)8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;
(2)4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得;
(3)2000元,期末平均成绩高于90分(>90)的学生均可获得;
(4)1000元,期末平均成绩高于85分(>85)的西部省份学生均可获得;
(5)850元,班级评议成绩高于80分(>80)的学生干部均可获得;
计算哪些同学获得的奖金总数最高。
样例输入
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
思路
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.
转载请注明原文地址: https://ju.6miu.com/read-659015.html