PAT甲-最佳排名
答案
N,M=list(map(int,input().split())) # N行数据和M个学生
dic={
}
for i in range(N):
x,y,z,f=list(map(int,input().split()))
dic[x]=[y,z,f,(y+z+f)/3]
a=[]#平均成绩
c=[]#c语言
m=[]#数学
e=[]#英语
for k,v in dic.items():
a.append(v[3])
c.append(v[0])
m.append(v[1])
e.append(v[2])
c=sorted(c,reverse=True)
a=sorted(a,reverse=True)
m=sorted(m,reverse=True)
e=sorted(e,reverse=True)
for i in range(M):
x=int(input())
if x in dic:、
#计算各科成绩全校排名
cc=c.index(dic[x][0])+1
mm=m.index(dic[x][1])+1
ee=e.index(dic[x][2])+1
aa=a.index(dic[x][3])+1
res=min(cc,mm,ee,aa)
char=''
# 按照A>C>M>E的顺序比较
if res==aa:
char='A'
elif res==cc:
char='C'
elif res==mm:
char='M'
elif res==ee:
char='E'
print(str(res)+" "+char)
else:
print("N/A")
个人感悟
题目难度不大,python可以直接ac,但是在做题过程中还是遇到了一些问题,英文题目,理解不够准确非常要命,输出结果中每行的第一个数字,最开始搞成了四科中最优先
的排名。此外,此题最初是用c++来做的,出于对c++的不够熟练,报错了很多次,换成Python就直接成功了。c++的编码习惯还是要好好培养。
原创
PAT甲-最优先排名
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法