2 条题解
-
0
#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e6+10; int a[N],m,n; bool check(int x){ int sum=0; for(int i=1;i<=n;i++)sum+=max(0ll,a[i]-x); return sum>=m; } signed main(){ scanf("%lld%lld",&n,&m); int mx=0; for(int i=1;i<=n;i++)scanf("%lld",&a[i]),mx=max(mx,a[i]); int l=1,r=mx; while(l<r){ int mid=(l+r+1)/2; if(check(mid))l=mid; else r=mid-1; } printf("%lld\n",l); return 0; } -
0
#include <iostream> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; int n,M,h[1000010]; bool check(int x){ LL s=0; for(int i=1;i<=n;i++) if(h[i]>x) s+=h[i]-x; return s>=M; //x小,s大 } int find(){ int l=0,r=1e9; while(l+1<r){ int mid=l+r>>1; if(check(mid)) l=mid; else r=mid; } return l; } int main(){ scanf("%d%d",&n,&M); for(int i=1;i<=n;i++)scanf("%d",&h[i]); printf("%d",find()); return 0; }
- 1
信息
- ID
- 2212
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 92
- 已通过
- 26
- 上传者