题目大意:给出一组人数,按照要求分类再排序输出。圣人是virtue和talent都超过h的人,君子是virtue超过h并且talent位于[l,h)区间内的人,笨蛋是两个都位于[l,h)区间内并且virtue>=talent的人,剩下的达到最低标准l的都是小人。PS:python日常超时,C++这里完美AC
class Person: def __init__(self,id,virtue,talent): self.id=id self.virtue=virtue self.talent=talent n,l,h=map(int,input().split()) sages=[] #圣人 noblemen=[] #君子 foolmen=[] #笨蛋 smallmen=[] #小人 cnt=0 #统计达标的总人数 for i in range(n): id,virtue,talent=map(int,input().split()) if virtue=h and talent>=h: #圣人 sages.append(Person(id,virtue,talent)) elif virtue>=h and talent in range(l,h): #君子 noblemen.append(Person(id,virtue,talent)) elif virtue in range(l,h) and talent in range(l,h) and virtue>=talent: #笨蛋 foolmen.append(Person(id,virtue,talent)) else: smallmen.append(Person(id,virtue,talent)) cnt+=1 sages.sort(key=lambda p:(-(p.virtue+p.talent),-p.virtue,p.id)) noblemen.sort(key=lambda p:(-(p.virtue+p.talent),-p.virtue,p.id)) foolmen.sort(key=lambda p:(-(p.virtue+p.talent),-p.virtue,p.id)) smallmen.sort(key=lambda p:(-(p.virtue+p.talent),-p.virtue,p.id)) print(cnt) for i in sages: print(i.id,i.virtue,i.talent) for i in noblemen: print(i.id,i.virtue,i.talent) for i in foolmen: print(i.id,i.virtue,i.talent) for i in smallmen: print(i.id,i.virtue,i.talent)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)