大佬求助!!!
查看原帖
大佬求助!!!
773162
jinenli123楼主2023/8/8 15:17

不知道哪里错了,第一次写二分

#include<bits/stdc++.h>
#define mian main
using namespace std;
long long num,n,a[1145141],maxx=0,minn=0,midd,mb,g,x;
int js(){
	mb=0;
	for(long long i=0;i<n;i++){
		g=a[i]-midd;
		if(g<=0){
			continue;
		}
		mb+=g;
	}
	return mb;
}
void sq(){
	minn=midd;
	midd=(midd+maxx)/2;
}
void xq(){
	maxx=midd;
	midd=(midd+minn)/2;
}
int mian(){
	cin>>n>>num;
	for(long long i=0;i<n;i++){
		cin>>a[i];
		if(a[i]>maxx){
			maxx=a[i];
		}
	}
	midd=maxx/2;
	while(1){
		x=js();
		if(x==num||maxx==minn||midd==minn||midd==maxx){
			cout<<midd;
			return 0; 
		}
		if(x<num){
	    	xq();
	    }
	    if(x>num){
	        sq();
	    }
	}
	return 0;
} 
2023/8/8 15:17
加载中...