80分求助(@^@)
查看原帖
80分求助(@^@)
818226
alma楼主2023/3/1 11:01

80分求助

麻烦各位大佬帮我看看这段代码哪里有错误。这个是#2和#10测试点出错。

#include<iostream>
#include<algorithm>
using namespace std;
#define size 100000

int L,N,K;
int d[size+10];

bool P(int );

int main(){
    cin>>L>>N>>K;
    for(int i=1;i<=N;i++)cin>>d[i];
    sort(d+1,d+N+1);
    
    int L=0,R=2*d[N],mid,ans;
    
    while(L<=R){
        if(P(mid=L+R>>1))
            ans=mid,R=mid-1;
        else
             L=mid+1;
    }
    cout<<ans<<endl;
    return 0;
}

bool P(int x){
    if(x==0)    return false;
    int sp=0,ind=2,ans=0;
    while(ind<=N){
        sp=d[ind]-d[ind-1];
        if(sp<=x){
            ind++;
        }else if(sp>x){
            int num=sp/x;
            ans+=num;
            if(ans>K)       return false;
            else if(ans<=K) ind++;
        }
    }
    return true;
}
2023/3/1 11:01
加载中...