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++的编码习惯还是要好好培养。