1600*A. Mafia(二分)

Problem - 348A - Codeforces

1600*A. Mafia(二分)_第1张图片

解析:

         考虑二分,左边界为所有 a[ i ] 的最大值,右边界为总和 sum

        因为每一轮最多让 n-1 个人玩一次,所以每次check时,看mid*( n-1 ) 能否满足所有人,即是否大于 mid

#include
using namespace std;
#define int long long
const int N=1e5+5;
int n,a[N],sum,mx;
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		mx=max(mx,a[i]);
		sum+=a[i];
	}
	int l=mx,r=sum;
	while(l>1;
		if(mid*(n-1)>=sum) r=mid;
		else l=mid+1;
	}
	cout<

你可能感兴趣的:(codeforces,c语言,算法,开发语言,数据结构,二分)