求 Debug
查看原帖
求 Debug
241090
Retucl楼主2021/1/23 20:45

Rt,a,b3a,b \leq 3 挂了三个

#include <cmath>
#include <cstdio>
#include <iostream>

using namespace std;

const int N = 1e5 + 5;
const int Mx = 50 + 5;

#define ll long long

ll n;

ll A , B , s , k[N];

ll ans = 1e18 , pow2[Mx];

inline bool check(ll val , ll mx){
	ll sum = 0 , now = 0;
	for(int i = 1; i <= n; i++){
		k[i] += val;
		if(sum + k[i] > 0)
			sum += k[i];
		else
			sum = 0;
		now = max(now , sum);
		k[i] -= val;
	}
	if((now * pow2[mx]) >= s)
		return 1;
	return 0;
}

int main(){
	cin >> n >> A >> B >> s;
	for(int i = 1; i <= n; i++)
		scanf("%lld" , &k[i]);
	pow2[0] = 1;
	for(int i = 1; i <= Mx - 10; i++)
		pow2[i] = pow2[i - 1] << 1;
	ll Maxx = ceil(log2(s));
	for(int i = 0; i <= Maxx; i++){
		ll l = 0 , r = 10000000000;
		while(l < r){
			ll mid = (l + r) >> 1;
			if(check(mid , i))
				r = mid;
			else
				l = mid + 1;
		}
		ans = min(ans , i * B + l * A);
	}	
	cout << ans;
	return 0;
}
2021/1/23 20:45
加载中...