一条笔直的公路上安装了N个路灯,从位置0开始安装,路灯之间的距离是100m。每个路灯都有自己的照明半径,请计算第一个路灯和最后一个路灯之间,未照明区间的长度和。
输入描述:
第一行为一个数N,表示灯的个数,[1, 100000]
第二行为N个空格分隔的数,表示路灯的照明半径,[1, 100*100000]
输出描述:
第一个路灯和最后一个路灯之间,未照明区间的长度和
举例:
输入:
8
10 10 10 10 10 10 10 10
输出:
560
输入:
8
10 10 10 250 10 10 10 10
输出:
160
def solution(alist):
def myfunc(x):
return x[0],x[1]
blist = sorted(alist,key=myfunc)
print(blist)
res = []
tmp = blist[0]
for i in range(1,len(blist)):
if blist[i][0] > tmp[1]:
res.append(tmp)
tmp = blist[i]
else:
tmp = [tmp[0],blist[i][1]]
res.append(tmp)
print(res)
if __name__ =="__main__":
#input_list = [10,10,10,10,10,10,10,10]
input_list = [10,10,10,250,10,10,10,10]
alist = []
for i in range(len(input_list)):
if i ==0:
alist.append([0,input_list[i]])
elif i == len(input_list)-1:
alist.append([100*i-input_list[i],100*i+input_list[i]])
else:alist.append([100*i-input_list[i],100*i])
solution(alist)