在一场比赛中有n个检查点,比赛要求到达n-1个检查点即可,
这些检查点排列在x轴上,位置分别为x1,x2,…,xn,
且允许以任意顺序访问检查点。比赛的开始位置为a,
求完成比赛所经过的最小距离。
【输入描述:】
输入包含两行
第一行为两个参数n,a,其中1 <= n <= 100000, -1000000 <= a <= 1000000
第二行为n个整数:x1,x2,…,xn(-1000000 <= xn <= 1000000)
【输出描述:】
输出一个整数
输入:
3 10
1 7 12
输出:
7
def minDistance(l, xn):#构造输入行函数
n, a = l[0], l[1]#两个参数n,a
M = xn #第二行为n个整数
M_sorted = sorted(M)#在x轴上排列
if a<M_sorted[0]:#以下进行数学中的分类讨论
return M_sorted[-2]-a
elif a>M_sorted[-1]:
return a-M_sorted[1]
else:
s1=a-M_sorted[0]
s2=M_sorted[-1]-a
if s1>s2:
return min(s2,a-M_sorted[1])+M_sorted[-1]-M_sorted[1]
else:
return min(s1, M_sorted[-2]-a) + M_sorted[-2] - M_sorted[0]
转载于:https://www.cnblogs.com/277223178dudu/p/10665424.html