75pts求调
查看原帖
75pts求调
541499
StarRoam楼主2024/3/25 11:48
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const long long INF=2e18+5;
long long n,ans=INF,x,y,s,val,f[N],a[N];
bool check(long long px,long long py)
{
	val=-INF;
	for(long long i=1;i<=n;i++)
	{		
		f[i]=a[i]+px;
		if(f[i-1]>0) f[i]+=f[i-1];
		val=max(val,f[i]);
	}
	val*=1ll<<py;
	if(val>=s) return true;
	else return false;
}
void acquire()
{
	for(long long i=0;i<=40;i++)
	{
		long long l=0,r=2e9+5;
		while(l<=r)
		{
			long long mid=(l+r)>>1;
			if(check(mid,i)==true)
			{
				ans=min(ans,1ll*i*y+1ll*mid*x);
				r=mid-1;
			}
			else l=mid+1;
		}
	}
	cout<<ans;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>x>>y>>s;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	acquire(); 
	return 0;
	
}
2024/3/25 11:48
加载中...