求助jvlao!二分查找,只有40分怎么回事?
查看原帖
求助jvlao!二分查找,只有40分怎么回事?
253680
HackerDsg楼主2020/7/28 00:12
#include<iostream>
#include<algorithm>
using namespace std;
long long N,M;
long long arr[1000005];
int main(){
	cin>>N>>M;
	for(int i=0;i<N;i++)cin>>arr[i];
	sort(arr,arr+N);//先给他排序,让它成为有序的
	long long low=0,high=arr[N-1],mid;
	while(low<=high){
		mid=low+(high-low)/2;
		int mutou=0;
		for(int i=0;i<N;i++){
			if(arr[i]-mid>0){
				mutou+=arr[i]-mid;
			}
		}
		if(mutou>=M){
			if(mutou>M)
				low=mid+1;
			else{
				cout<<mid;
				return 0;
			}
		}else{
			high=mid-1;
		}
	}
	cout<<mid;
	return 0;
}

jvlao帮帮忙,蟹蟹

2020/7/28 00:12
加载中...