Java 70分,Help
查看原帖
Java 70分,Help
727009
Foright楼主2023/11/30 22:36
import java.util.Arrays;
import java.util.Scanner;
public class Main{
    static int N = 50010;
    static int arr[] = new int[N];
    static int d,n,m,l,r,ans;
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        d = sc.nextInt();
        n = sc.nextInt();
        m = sc.nextInt();
        for(int i = 0;i < n;i++) arr[i] = sc.nextInt();
        l = 0;r = d;
        while(l <= r){
            int mid = l + (r - l) / 2;
            if(check(mid)){
                l = mid + 1;
                ans = mid;
            }
            else r = mid - 1;
        }
        System.out.println(ans);
    }
    public static boolean check(int num){
        int count = 0;//准备移走的数目
        int temp = 0;//当前下标
        int i = 0;
        while(i < n){
            i++;
            //小于最短距离mid的,移走
            if(arr[i] - arr[temp] < num){
                count++;
            }
            else temp = i;
        }
        if(count > m) return false;
        return true;
    }
}
2023/11/30 22:36
加载中...