題目描述
發放的獎學金共有五種,獲取的條件各自不同:(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.