标签:bottom clu 需要 条件 print 数组 iostream 二分 alt
#include <iostream> #include<cstdio> #include<algorithm> typedef long long ll; using namespace std; ll n,a[300010]; bool ok(ll x){ ll sub=0,add=0; for(ll i=1;i<=n;i++) { if(a[i]<x) add+=(x-a[i]); else if((a[i]-x)%2==0) sub+=(a[i]-x)/2; else sub+=(a[i]-x-1)/2; } return sub>=add; } int main() { ll t;scanf("%lld",&t); while(t--){ scanf("%lld",&n); for(ll i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+1+n); ll l=a[1],r=a[n]; while(l<=r){ ll mid=(l+r)/2; if(ok(mid)) l=mid+1; else r=mid-1; } printf("%lld\n",r); } return 0; }
标签:bottom clu 需要 条件 print 数组 iostream 二分 alt
原文地址:https://www.cnblogs.com/lllxq/p/9488762.html