1 条题解

  • 0
    @ 2024-1-29 16:15:14

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int n, k, a[100005], l, r, ans;
    
    bool check(int x) {
        int now = 1, cnt = 0;
        for (int i = n; i >= now; i--) {
        	if (i == now) {
        		cnt++;
        		continue;
    		}
            if (a[i] + a[now] <= x)
                now++;
            cnt++;
        }
        return cnt <= k;
    }
    
    int main() {
        cin >> n >> k;
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
        }
        sort(a+1,a+1+n);
        l = a[n], r = a[n - 1] + a[n];
        while (l <= r) {
            int mid = (l + r) >> 1;
            if (check(mid)) 
                r = mid - 1, ans = mid;
            else l = mid + 1;
        }
        cout << ans;
        return 0;
    }
    

    信息

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