注意到难度的值域为 可以开一个cnt数组统计出每个难度的题目数量
由于需要选出 道题作为比赛,所以如果想要使得难度为
的题目作为签到题那么必须满足难度
的题目数量
,那么可以从大到小枚举题目难度同时计算出难度
的题目数量之和,如果满足
则可以用该难度的题目数量
更新答案最大值。然后注意,答案不能超过 m。
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int a[N], cnt[N], sum[N];
int main() {
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i ++) {
cin >> a[i];
cnt[a[i]] ++;
}
int ans = 0, sum = 0;
for (int i = n; i >= 1; i --) {
sum += cnt[i];
if (sum >= m) ans = max(ans, cnt[i]);
}
ans = min(ans, m);
cout << ans;
return 0;
}

京公网安备 11010502036488号