二分答案即可,check方法很简单,每个元素比预期少总和的和多出来的的综合是不是两倍关系即可 #include<bits/stdc++.h> using namespace std; int main(){ long long a[4]; long long sum = 0; for(int i=0;i<4;i++){ scanf("%lld",&a[i]); sum += a[i]; } sort(a,a+4); long long l = 1; long long r = sum / 4; long long ans = -1; while(l<=r){ long long mid = (l+r) / 2; long long need = 0; long long left = 0; for(int i=0;i<4;i++){ if(a[i] < mid){ need += (mid - a[i]); }else if(a[i]>mid){ left += (a[i] - mid); } } if(need * 2<=left){ ans = max(ans,mid); l = mid+1; }else{ r = mid-1; } } cout<<ans * 4<<endl; }
1 1

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务