📅  最后修改于: 2023-12-03 15:42:18.399000             🧑  作者: Mango
本题目为2016年GATE-CS-2016的第43题,考察了程序员们对于数据结构以及算法方面的知识。
给定一组N个整数,可以在其中选择任意个数进行排序,但不能改变它们原来的顺序。请编写一个程序来确定是否可以通过排序这些数字使得它们的平均值增加,如果可以,请输出“yes”,否则输出“no”。
输入的第一行包括一个整数T,表示测试用例的数量。每个测试用例包括两行:第一行包含组数N(1 <= N <= 100)和平均值K(1 <= K <= 100)。第二行包含N个整数。
对于每个测试用例,程序将输出“yes”或“no”(不带引号)。
2 4 9 -3 4 -2 8 4 8 -3 4 -2 8
yes no
首先读入 T,再将数据读入,然后将输入的 N 个数按照从小到大的顺序排序。为了判断是否能使平均值增加,我们需要找到除了最大的数字以外所有数字的平均值 (sum - max_number)/(n-1) 和最小值 K 之间的关系。如果当前平均值 sum/n 大于等于 K,我们将输出“no”;否则,我们输出“yes”。
t = int(input())
for i in range(t):
n, k = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort()
sum = 0
for j in range(n-1):
sum += numbers[j]
if sum/(n-1) >= k:
print("no")
else:
print("yes")