题意
找出奖学金最多的学生
分析
这题就是很简单的字符串处理,细心一点就好。
先把每一个学生的奖学金算出来,再排序,如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。
var
n,tj,i,gb,xb,lw,q,b,j:longint;
m:array[0..100]of string;
t,p:array[0..100]of longint;
s:string;
begin
readln(n);tj:=0;
for i:=1 to n do
begin
readln(s);
m[i]:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
val(copy(s,1,pos(' ',s)-1),q);
delete(s,1,pos(' ',s));
val(copy(s,1,pos(' ',s)-1),b);
delete(s,1,pos(' ',s));
if copy(s,1,pos(' ',s)-1)='Y' then gb:=1 else gb:=0;
delete(s,1,pos(' ',s));
if copy(s,1,pos(' ',s)-1)='Y' then xb:=1 else xb:=0;
delete(s,1,pos(' ',s));
lw:=ord(s[1])-ord('0');
if (q>80)and(lw>=1) then
begin
tj:=tj+8000;
t[i]:=t[i]+8000;
end;
if (q>85)and(b>80) then
begin
tj:=tj+4000;
t[i]:=t[i]+4000;
end;
if (q>90) then
begin
tj:=tj+2000;
t[i]:=t[i]+2000;
end;
if (xb=1)and(q>85) then
begin
tj:=tj+1000;
t[i]:=t[i]+1000;
end;
if (gb=1)and(b>80) then
begin
tj:=tj+850;
t[i]:=t[i]+850;
end;
p[i]:=i;
end;
for i:=1 to n-1 do
begin
for j:=i+1 to n do
if (t[i]<t[j])or(t[i]=t[j])and(p[j]<p[i]) then
begin
t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];
m[0]:=m[i];m[i]:=m[j];m[j]:=m[0];
end;
end;
writeln(m[1]);
writeln(t[1]);
write(tj);
end.