python代码30分,求大佬解惑
查看原帖
python代码30分,求大佬解惑
1504632
nxd202383310063楼主2024/10/10 21:53
length = int(input())
num = int(input())
# 输入人员初始坐标并用空格隔开
coordinate = input()
coordinates = coordinate.split(sep=' ')
v = 1
# 先考虑所用时间最少的情况 最小距离是最远的人的距离 最少的情况就是没有出现相向而行的情况
if length % 2 == 0:
    t = int(length / 2)
else:
    t = int((length+1) / 2)
n1 = abs(int(coordinates[0]) - t)
if length % 2 != 0:
    for i in range(1, num):
        if abs(int(coordinates[i]) - t) < n1:
            n1 = abs(int(coordinates[i]) - t)
    min_distance = t - n1
n2 = abs(int(coordinates[0]) - t - 1)
if length % 2 == 0:
    for i in range(1, num):
        if abs(int(coordinates[i]) - t) < n1:
            n1 = abs(int(coordinates[i]) - t)
    for i in range(1, num):
        if abs(int(coordinates[i]) - t - 1) < n2:
            n2 = abs(int(coordinates[i]) - t - 1)
    n = min(n1, n2)
    min_distance = t - n
min_time = int(min_distance / v)
# 再考虑所用时间最长的情况 两个人相遇其实相当于两人互换灵魂 除此之外别无影响 因此只需找到离端点最近的便是最大值
min = int(coordinates[0])
max = int(coordinates[0])
for i in range(1, num):
    if int(coordinates[i]) < min:
        min = int(coordinates[i])
    elif int(coordinates[i]) > max:
        max = int(coordinates[i])
if (length + 1 - min) > (length + 1 - max):
    max_distance = (length + 1 - min)
else:
    max_distance = (length + 1 - max)
max_time = int(max_distance / v)
print(f'{min_time} {max_time}')

2024/10/10 21:53
加载中...