7 条题解

  • 0
    @ 2024-9-17 15:57:43
    /*
    int      %o/%lo(八进制) %d/%i/%ld/%li(十进制) %x/%lx(十六进制)[如标名为o/lo/d/i/lo/li/x/lx即输出为八进制/十进制/十六进制]
    longlong %lld
    float    %f/%e
    double   %lf/%le
    char     %c
    char[]   %s
    'a'=97
    'z'=122
    'A'=65
    'Z'=90
    '0'=48
    '9'=57
    */
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <ctime>
    #include <limits>
    #include <assert.h>
    #include <stdlib.h>
    using namespace std;
    #define LL long long
    #define ull unsigned long long
    const int N=1e5+10;
    const int INF=0x3f3f3f3f;
    const double pi=3.1416;
    int n,m,a[N],l,r,ans;
    bool check(int mid){
    	int sum=1;
    	int last=a[1];
    	for(int i=2;i<=n;i++){
    		if(last+mid<=a[i]){
    			last=a[i];
    			sum++;
    		}
    	}
    	return sum>=m;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	sort(a+1,a+n+1);
    	l=1;
    	r=a[n]-a[1];
    	while(l<=r){
    		int mid=(l+r)>>1;
    		if(check(mid)){
    			ans=mid;
    			l=mid+1;
    		}else{
    			r=mid-1;
    		}
    	}
    	cout<<ans<<endl;
    return 0;
    }
    

    信息

    ID
    357
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    404
    已通过
    100
    上传者