计蒜课 百度无人车 【二分答案】

【https://www.jisuanke.com/contest/1228/74417】

 

#include<bits/stdc++.h>
#include<string.h>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mod 1000000007
#define inf 0x3f3f3f3f
#define maxn 20005
using namespace std;
ll n,a[maxn];//车数量 每辆车重量
ll p; //每辆车花费
ll s;  //总预算
ll check(ll x) //设x是最重的重量
{
    ll sum=0; //实际预算
    for(ll i=0;i<n;i++)
    {
        if(a[i]>x){
            sum+=(a[i]-x)*p;
        }
    }
    return sum<=s;
}
int main()
{
    cin >> n;
    ll ans;
    ll Max = 0;
    for(ll i=0;i<n;i++){
        cin>>a[i];
        Max = max(Max,a[i]);
    }
    cin>>p>>s;
    //sort(a,a+n);
    ll l=1, r=Max;
    while(l<=r)
    {
        ll mid=(l+r)/2;
        if(check(mid)){
            ans=mid;
            r = mid-1;
        }
        else
        {
            l = mid+1;
        }
    }
    cout<<ans<<endl;
}

 

posted @ 2018-05-12 20:25  Roni_i  阅读(281)  评论(0编辑  收藏  举报