[题目描述]
 在 ACM 竞赛中,当遇到有两个队伍(人) 解出相同的题目数量的时候,我们需要通过他们解决问题的总时间进行排序。
 一共有 N 条时间被以时( Hours ), 分( Minutes ),秒( Seconds )的形式记录。
 你必须要把他们按时,分,秒排序为升序,最少的时间最先。 考虑到如下的样例,这三个解出相同题目数量的时间为:
 11:20:20
 11:15:12
 14:20:14
 正确的排序结果应该是这样的:
 11:15:12
 11:20:20
 14:20:14
输入格式:
 输入共 n+1 行。
 第 1 行,一个整数 N,表示一共有 N 条记录。
 第 2 ~ n+1 行,每行 3 个整数,表示时,分,秒。
输出格式:
 共 n 行,每行 3 个整数,表示排序完后的结果。
样例输入
 3 
 11 20 20
 11 15 12
 14 20 14
样例输出
 11 15 12 
 11 20 20 
 14 20 14
数据范围
 对于 100% 的数据,保证 1≤Hours≤99,0≤Minutes≤59,0≤Seconds≤59。
 来源/分类(难度系数:四星)
排序 
完整代码展示:
 n=int(input())
 s1=[]
 s2=[]
 for i in range(n):
       x=list(map(int,input().split()))
       s1.append(x)
       sum=3600*x[0]+60*x[1]+x[2]
       s2.append(sum)
 s2.sort()
 for i in range(0,len(s2)):
       for j in range(0,len(s1)):
             if 3600*s1[j][0]+60*s1[j][1]+s1[j][2]==s2[i]:
                   print(s1[j][0],s1[j][1],s1[j][2])
代码解释:
 “n=int(input()) ”,让用户输入记录的数量n.
 “s1=[]
  s2=[]
  for i in range(n):
        x=list(map(int,input().split()))
        s1.append(x)
        sum=3600*x[0]+60*x[1]+x[2]
        s2.append(sum)                      ”,建立两个空列表s1和s2,循环n次:让用户输入一串记录,并将其储存在列表x中,将x添加进s1中,将x中的记录转换为秒钟数后添加进s2中。
 “s2.sort()
  for i in range(0,len(s2)):
        for j in range(0,len(s1)):
              if 3600*s1[j][0]+60*s1[j][1]+s1[j][2]==s2[i]:
                   print(s1[j][0],s1[j][1],s1[j][2]) ”,对s2中的元素进行升序排序,接着遍历s2,s1中元素,如果查找到s1中的元素所转换的数据与s2中的元素相同,则打印s1中的该元素。
运行效果展示:


(声明:以上内容均为原创)



















