(贪心)你用过QQ吗?在QQ群里,管理员可以禁言用户。
在Boboniu的QQ群里,小D每天都开Boboniu的玩笑。
小D会在群里待n天,Boboniu的心情是m。在第i天,如果小D没被禁言,他会开一个严重程度为ai的玩笑;如果开的玩笑严重程度大于m,他就会被Boboniu禁言d天,也就是说,在第i+1,i+2,...,min(i+d,n)天,他都会被禁言。
你可以将序列a重排,求开的所有玩笑的严重程度之和的最大值。
[输入]
第一行是n,d,m,之后一行n个整数ai。
1 ≤d≤n≤=10^5,0≤m≤10^9 ,0≤a≤10^9。
提示:贪心。
试补全程序。
# include <bits/stdc++.h>
using namespace std;
const int MAXN= 1e5 + 5;
int big[MAXN], small[MAXN], sum[MAXN];
int p1=1,p2=1;
int n,m,k,x;
int main() {
cin>> n>> m>> k;
for(int i=1; i<=n; i++) {
cin>>x;
if(x <= k) {
___(1)___;
} else {
big[p2++]=x;
}
}
sort(small+1, small+1+ p1,greater<int>());
sort(big+ 1, big+1 + p2, greater<int>());
for(int i=1; i<=p1; i++) {
___(2)___;
}
int ans= sum[p1], cur = 0;
for(int i=1; i<= p2; i++) {
cur+= ___(3)___;
int days =___(4)___+1;
if(days>n) {
break;
}
int left = min(n-days, p1);
ans=max(ans,___(5)___);
}
cout<< ans<< endl;
return 0;
}
选择题
1) ⑴处应填( )
2) ⑵处应填( )
3) ⑶处应填( )
4) ⑷处应填( )
5) ⑸处应填( )