求调!!!
查看原帖
求调!!!
1060680
Silversnowflake楼主2024/3/9 15:06

二分搜索 50分 #RE2,3,5,9,10

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int ans,n,m,all[N];
int main(){
	int max,min,mc;min = 0;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>all[i];
		if(all[i] > max) max = all[i];
	}
	while((max-min)>=3){
		mc = 0;ans = (min+max)/2;
		for(int i=0;i<n;i++){
			if(all[i]>ans)mc+=(all[i]-ans);
		}
		if(mc<m){
			max = ans;ans = (min+max)/2;
			
		}
		if(mc>m){
			min = ans;ans = (min+max)/2;
			
		}
		if(mc==m){
			cout<<ans;return 0;
		}
	}
	cout<<ans;
	return 0;
}

2024/3/9 15:06
加载中...