2018 计蒜之道 初赛 第一场A. 百度无人车

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a[20005];
int main()
{

ll n,p,s,sum=0;
ll ans;
scanf("%lld",&n);
for(ll i=0;i<n;i++)
  {
scanf("%lld",&a[i]);
sum+=a[i];
  }
sort(a,a+n);
   scanf("%lld %lld",&p,&s);
   if((sum-n*a[0])*p<=s)
   {
    s-=(sum-n*a[0])*p; ans=a[0];
    while((n*p)<=s&&ans>0) s-=n*p,ans--;
   
}else {
   ll numb=1; ans=a[n-1];
    for(ll i=n-1;i>0;i--)
       {    
        if((a[i]-a[i-1])*p*numb<=s)
        s-=(a[i]-a[i-1])*p*numb,numb++,ans=a[i-1];
        else {
           while(numb*p<=s&&ans>0)ans--,s-=numb*p;
           if(ans<a[i-1])ans=a[i-1];
           break;
        } 
}
         }
         if(ans==0)ans=1;
         printf("%lld\n",ans);
return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_41603898/article/details/80294459