from math import inf def main(): n, m = map(int, input().strip().split()) nums = list(map(int, input().strip().split())) # 先将被选的n副画作按价值排序,那么要选出来的一定是其中连续的m副 nums.sort() L = 0 ans = inf left = 0 for right, B in enumerate(nums): # 新元素进入 if right>=1: L += abs(B**2-nums[right-1]**2) # 移动窗口 if right-left+1>m: L -= abs(nums[left+1]**2-nums[left]**2) left += 1 # 记录答案 if right+1>=m: ans = min(ans, L) print(ans) main()
n, m = map(int, input().split())
a = list(map(int, input().split()))
a,min1 = sorted(a), float('inf')
for i in range(n-m+1):
x,y = a[i],a[i+m-1]
shu = y**2-x**2
if shu < min1:
min1 = shu
print(min1)
##此题看似很难,但是我们在做这种题的时候,都一定是转化为单循环,双循环必超时,由于不和谐度与数之间的差值和和有关,因为x平方减y平方等于x与y的和乘以x与y的差,所以xy应该尽量小,且差值也应该小,所以此时可以直接sorted,之后可以发现,因为排序后Bi的值一直在增大,所以可以去掉绝对值,所以化简成了最后一个数的平方减去第一个数的平方,由此转化成了单循环