1 条题解

  • 0
    @ 2023-12-20 19:14:27
    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5 + 5;
    int n, d, m, a[maxn];
    long long ans, sum[maxn];
    
    int main() {
        scanf("%d%d%d", &n, &d, &m);
        for (int i = 1; i <= n; i++)
            scanf("%d", a+i);
        sort(a+1, a+n+1);
        int l = upper_bound(a+1, a+n+1, m) - a - 1;
        reverse(a+1, a+l+1);
        for (int i = 1; i <= l; i++)
            sum[i] = sum[i-1] + a[i];
        ans = sum[l];
        long long tmp = 0;
        for (int i = n; i > l; i--) {
            tmp += a[i];
            int cnt = n - (n - i) * (d + 1) - 1;
            if (cnt < 0) break;
            ans = max(ans, tmp + sum[min(cnt, l)]);
        }
        printf("%lld\n", ans);
        return 0;
    }
    
    
    • 1

    信息

    ID
    14
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者