70分求助
查看原帖
70分求助
1180203
ingeneral楼主2024/5/25 17:10

测试点4,7,11还有subtask都是WA

#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int l, n, m;

bool judge(const int& mid) {
    int c = 0;
    int current = 0;
    int next = 0;
    while (next < n+1) {
        ++next;
        if (v[next] - v[current] < mid) {
            ++c;
        }
        else current = next;

    }
    if (c > m) return false;
    else return true;
}

int main() {
    cin >> l >> n >> m;
    for (int i = 0; i < n; ++i) {
        int a; cin >> a;
        v.push_back(a);
    }
    v.push_back(l);

    int left = 1, right = l;
    int mid = 0, ans = l;
    
    while (right >= left) {
        mid = left + ((right - left) >> 1);
        if (judge(mid)) {
            ans = mid;
            left = mid + 1;
        }
        else right = mid - 1;
    }
    cout << ans;
    return 0;
}
2024/5/25 17:10
加载中...