2 条题解
-
0
using namespace std; long long int o[1000002],a,b,minn=0,maxx=1000000,mid=500,e=0; int main() { cin>>a>>b; for (int i=0;i<a;i++) cin>>o[i]; while (minn<maxx) { for (int i=0;i<a;i++) if (o[i]>mid) e+=o[i]-mid; if (e>=b) minn=mid; else maxx=mid-1; mid=(maxx+minn)/2+1; e=0; } cout<<mid-1; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll h[1000010],n,m,max1; ll check(ll x) { ll ans=0; for(int i=1;i<=n;i++) { if(h[i]>x) { ans=ans-x+h[i]; } } return ans; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&h[i]); if(h[i]>max1) max1=h[i]; } ll l=1,r=max1; while(l<=r) { ll mid=(l+r)/2,q=check(mid); if(q<m) r=mid-1; else l=mid+1; } printf("%d",r); return 0; }
- 1
信息
- ID
- 439
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 92
- 已通过
- 17
- 上传者