P1051 谁拿了最多奖学金

    xiaoxiao2021-03-26  30

    题目描述

    发放的奖学金共有五种,获取的条件各自不同: (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

    最新回复(0)