题解 | #成绩排序#

成绩排序

http://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

这道题最恶心的地方是相同成绩要按输入顺序输出,所以想到了用bisect模块。

bisect_left(a,num)返回num在有序序列a中的位置,如果num已经存在在a中,那就返回序列中num的位置

bisect_right(a,num)是如果num已经在a中,返回序列中最右边的num的右边位置

import bisect
while 1:
    try:
        n = int(input())
        sort = int(input())
        namelist = []
        score = []
        score2 = []
        name2 = []
        for i in range(n):
            name = input().split()
            namelist.append(name[0])
            score.append(int(name[1]))
        if sort:
            for i in range(n):
                place = bisect.bisect_right(score2, score[i])
                name2.insert(place,namelist[i])
                bisect.insort_right(score2, score[i])
            for i in range(n):
                print("%s %d"%(name2[i],score2[i]))
        else:
            for i in range(n):
                place = bisect.bisect_left(score2, score[i])
                name2.insert(place,namelist[i])
                bisect.insort_left(score2, score[i])
            for i in range(n-1,-1,-1):
                print("%s %d"%(name2[i],score2[i]))
    except:
        break
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务