链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
有一列羊棚,羊就住在里面过夜。有些羊棚里有羊,有些没有。 所有的羊棚有相同的宽度。
因为一场狂风,有些门遗失,fb 必须尽快在羊棚门前竖立起新的木板。他的新木材供应商将会供应他任何他想要的长度,但是供应商只能提供有限数目的木板。 fb 想将他购买的木板总长度减到最少。
给出 m,s,c,表示木板最大的数目、羊棚的总数、羊的总数;以及每头羊所在羊棚的编号,请算出拦住所有有羊的羊棚所需木板的最小总长度。
输入描述:
一行三个整数 m,s,c。 接下来 c 行,每行包含一个整数,表示羊所占的羊棚的编号。
输出描述:
输出一行一个整数,表示所需木板的最小总长度。
示例1
输入
复制4 50 18 3 4 6 8 14 15 16 17 21 25 26 27 30 31 40 41 42 43
4 50 18 3 4 6 8 14 15 16 17 21 25 26 27 30 31 40 41 42 43
输出
复制25
25
备注:
1≤m≤50,1≤c≤s≤200
m,s,c=map(int,input().split())
a=[0]*c
sub=[0]*(c-1)
for i in range(c) :
a[i]=eval(input())
if c==1 :
print(1)
if m==1 and c != 1 :
print(a[-1]-a[0]+1)
if c != 1 and m != 1 :
if m>c :
print(c)
else :
for i in range (c-1) :
sub[i]=a[i+1]-a[i]
sub.sort()
length=a[-1]-a[0]+1
for i in range(m-1) :
if sub[-1]==0 :
# length+=1
break
else :
print(sub)
length-=sub[-1]
# if i==m-2 :
# length+=2
# else :
length+=1
sub[-1]=0
sub.sort()
print(length)