70分求助(Java)
查看原帖
70分求助(Java)
286366
pinkPatrick楼主2020/9/20 09:56
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class P1873 {
    public static void main(String args[]) throws IOException {
        StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        st.nextToken();
        int n = (int)st.nval;
        st.nextToken();
        long m = (long)st.nval;
        long [] num = new long [n];
        long left = 0,right = 0;
        //将数据输入到数组中
        for(int i=0; i<n; i++){
            st.nextToken();
            num[i] = (int)st.nval;
            if(num[i] > right){
                right = num[i];
            }
        }
        //利用二分查找来解,时间复杂度O(nlogn * n)
       while(left <= right){
           int mid = (int)(left + right) / 2;
           int temp = 0;
           for(long k:num){
               if(k > mid){
                   temp += k - mid;
               }
           }
           if(temp < m){
               right = mid - 1;
           }else{
               left = mid + 1;
           }
       }
        System.out.println(right);
    }
}

2020/9/20 09:56
加载中...