1 条题解

  • 0
    @ 2023-6-21 20:13:14

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define MAXN 100010
    int n,m;
    int a[MAXN];
    inline int read(){
    	int x=0,t=1,c;
    	while(!isdigit(c=getchar())) if(c=='-') t=-1;
    	while(isdigit(c)) x=x*10+c-'0',c=getchar();
    	return x*t;
    }
    bool check(int x){
    	int cnt=1,dis=a[1]+x;
    	for(int i=2;i<=n;i++){
    		if(a[i]<dis) continue;
    		++cnt,dis=a[i]+x;
    	}
    	return cnt>=m;
    }
    void erfen(){
    	int l=0,r=a[n]-a[1];
    	while(l<=r){
    		int mid=l+r>>1;
    		if(check(mid)) l=mid+1;
    		else r=mid-1;
    	}
    	printf("%d\n",r);
    }
    int main(){
    	n=read(),m=read();
    	for(int i=1;i<=n;i++) a[i]=read();
    	sort(a+1,a+n+1);
    	erfen();
    	return 0;
    }
    
    • 1

    信息

    ID
    1053
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者