[题目描述]
在 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中的该元素。
运行效果展示:
(声明:以上内容均为原创)