#20分,蒟蒻求助!
查看原帖
#20分,蒟蒻求助!
984203
Dead_Cell楼主2023/8/2 22:06
#include <bits/stdc++.h>
using namespace std;

int main() {
    long long L, N, M;
    cin >> L >> N >> M;

    vector<long long> rocks(N + 2);
    vector<long long> distances(N + 1);

    rocks[0] = 0;
    rocks[N + 1] = L;

    for (int i = 1; i <= N; i++) {
        cin >> rocks[i];
    }

    for (int i = 1; i <= N + 1; i++) {
        distances[i] = rocks[i] - rocks[i - 1];
    }

    long long left = 0, right = L, result = 0;

    while (left <= right) {
        long long mid = (left + right) / 2;
        long long count = 0;
        for (int i = 1; i <= N + 1; i++) {
            count += (distances[i] - 1) / mid;
        }

        if (count <= M) {
            result = mid;
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }

    cout << result << endl;

    return 0;
}
2023/8/2 22:06
加载中...