大佬求助 全红0分 除了附加点过了 给的案例也能过
查看原帖
大佬求助 全红0分 除了附加点过了 给的案例也能过
782719
lstbubailan楼主2023/9/13 11:21
#include<bits/stdc++.h>
using namespace std;
int L,n,m;
const int N=10000010;
int arr[N];
bool check(int mid){
    int now=1,sum=0;
    for(int i = 2;i <= n; i++){
        if(arr[i]-arr[now] > mid){
            sum++;
            if(sum > m) return false;
            int j=1;
            while(arr[i]- arr[now] - j*mid > mid){
                sum++;
                j++;
                if(sum > m) return false;
            }
        }else now ++;
    }
    if(sum <= m) return true;
    else return false;
}

int main(){
    cin>>L>>n>>m;    
    for(int i=1; i <= n ;i++)
        cin>>arr[i];
    int l=-1,r=L+1;
    
    while( l + 1 < r){
        int mid=(l + r) / 2;
        if(check(mid)) r = mid;
        else l= mid;
    }
    if(check(r)) cout<<r<<endl;
    else cout<<l<<" "; 
}
2023/9/13 11:21
加载中...