【发布时间】:2020-02-17 11:26:59
【问题描述】:
有 N 位车手参加锦标赛。每场比赛结束后,他们都会获得积分,包括最后一场比赛。比赛获胜者获得 N 分,亚军获得 N - 1 分,以此类推,直到最后一名车手获得 1 分。两名车手不能在同一地点完成比赛。
编写一个程序,根据每位车手在最后一场比赛前获得的总积分数,计算有多少车手在最后一场比赛后仍有机会获得最大积分从而赢得冠军。如果多个车手的最高总分相同,他们都会获得世界冠军头衔。
我的所有测试用例都超出了时间限制,并且我的代码在一个测试用例中失败了 100 名参与者。 测试用例是:
测试用例 1:
3
10
9
8
输出 3
测试用例 2:
5
15
14
12
14
15
输出 4
这是我的代码:
n=int(input())
b=[]
for i in range(n) :
b.append(int(input()))
l=len(b)
c=l
sort(b)-->>> some sorting algo to sort in O(n*logn)
for i in range(len(b)) :
x=b[i]
x+=l
for j in range(i+1,len(b)) :
l-=1
y=b[j]
y+=l
if y>x :
c-=1
break
print(c)``
【问题讨论】:
-
什么测试用例?给我们看一看!并制定一个good question。
标签: python python-3.x optimization