def sum_max_min():
# 读取输入
M = int(input().strip())
arr = list(map(int, input().strip().split()))
N = int(input().strip())
# 去重
unique_arr = list(set(arr))
# 如果去重后元素不足 2N 个,返回 -1
if len(unique_arr) < 2 * N:
print(-1)
return
# 排序
unique_arr.sort()
# 计算最大 N 个和最小 N 个数的和
result = sum(unique_arr[:N]) + sum(unique_arr[-N:])
print(result)
# 调用函数
sum_max_min()
题解思路:
- 读取输入:
先读取 M(数组大小)和 M 个数组元素。
再读取 N(要求取的最大和最小的 N 个数)。
- 去重:
使用 set() 去重,得到无重复的数组。
- 判断非法输入:
如果去重后的数组大小小于 2N(无法同时取最大 N 个和最小 N 个),返回 -1。
- 计算结果:
排序去重后的数组,取前 N 个作为最小值,后 N 个作为最大值。
计算它们的和并输出。