题目链接:http://codeforces.com/contest/1334/problem/B
题目意思是,给定一个值,判断一个小镇的人的财富经过互相平均,最多有多少人的财富能大于等于这个值。先进行排序,然后从大到小贪心判断平局值是否大于等于该给定值。
代码如下:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int t;
cin >> t;
while(t--) {
int n, x;
cin >> n >> x;
int a[100005];
ll sum = 0;
for(int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n);
int res = 0;
for(int i = n - 1; i >= 0; i--) {
sum += a[i];
if((sum / (n - i)) >= x) {
res++;
} else {
break;
}
}
cout << res << endl;
}
}