#pragma GCC optimize("Ofast")
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <queue>
#include <algorithm>
#include <cassert>
#include <random>
#include <chrono>
#include <iomanip>
#include <cmath>
#include <bitset>
#include <functional>
#include <ranges>
#include <numeric>
#define int long long
#define double long double
#define ii pair<int,int>
#define iii pair<int, ii >
#define fi first
#define se second
#define getbit(x,y) (((x)>>(y))&1ll)
#define turnon(x,y) ((x)|(1ll<<y))
#define turnof(x,y) ((x)^(1ll<<y))
#define oo 1e18
#define pb push_back
#define all(x) x.begin(),x.end()
#define con(mask) mask=(mask-1)&mask
#define Unique(val) val.erase(unique(val.begin(),val.end()),val.end())
#define rand_int mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define rand_ll mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());
const int mod = 1e9 + 7;
const double pi = acos(-1);
const double esp = 1e-7;
using namespace std;
int D;
int T_c;
int C_1, C_2;
int N_1, N_2;
int h[100005];
deque<ii> Old, Middle, New;
void add(int day, int val) {
...
}
void update(int pos_1, int pos_2) {
...
}
int check(int mid) {
// assume N_1 > N_2 and C_1 < C_2
// If not we just need to use one of them
if(C_1 > C_2) {
swap(N_1, N_2);
swap(C_1, C_2);
}
if(N_1 < N_2) {
N_2 = N_1;
C_2 = C_1;
}
Old.clear();
Middle.clear();
New.clear();
int sum = mid * T_c - mid * C_1;
add(-1000000, mid);
for(int i = 1; i <= D; i++) {
update(i - N_1, i - N_2);
int tmp = 0;
while(Old.size() && tmp < h[i]) {
...
}
while(Middle.size() && tmp < h[i]) {
...
}
if(tmp < h[i]) return -1;
add(i, h[i]);
}
return sum;
}
void solve() {
cin >> D >> N_1 >> N_2 >> C_1 >> C_2 >> T_c;
for(int i = 1; i <= D; i++) cin >> h[i];
int l = 0, r = 1e12;
while(r - l > 2) {
int mid_1 = l + ( r - l ) / 3;
int mid_2 = l + ( r - l ) / 3 * 2;
int tmp = check(mid_1);
if(tmp < 0 || tmp >= check(mid_2)) {
l = mid_1;
}
else r = mid_2;
}
int ans = check(r);
for(int i = l; i < r; i++) {
int tmp = check(i);
if(tmp < 0) continue;
ans = min(ans, tmp);
}
cout << ans;
}
signed main() {
#ifndef ONLINE_JUDGE
freopen("inp.inp", "r", stdin);
freopen("out.out", "w", stdout);
#endif
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t = 1;
//cin >> t;
while(t--) {
solve();
}
}
// ProTeam
//(¯`·.·´¯) (¯`·.·´¯)
//`·.¸(¯`·.·´¯)¸ .·
//×°× ` ·.¸.·´ ×°×
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjYXNzZXJ0PgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHJhbmdlcz4KI2luY2x1ZGUgPG51bWVyaWM+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGRvdWJsZSBsb25nIGRvdWJsZQojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBpaWkgcGFpcjxpbnQsIGlpID4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGdldGJpdCh4LHkpICgoKHgpPj4oeSkpJjFsbCkKI2RlZmluZSB0dXJub24oeCx5KSAoKHgpfCgxbGw8PHkpKQojZGVmaW5lIHR1cm5vZih4LHkpICgoeCleKDFsbDw8eSkpCiNkZWZpbmUgb28gMWUxOAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCkseC5lbmQoKQojZGVmaW5lIGNvbihtYXNrKSBtYXNrPShtYXNrLTEpJm1hc2sKI2RlZmluZSBVbmlxdWUodmFsKSB2YWwuZXJhc2UodW5pcXVlKHZhbC5iZWdpbigpLHZhbC5lbmQoKSksdmFsLmVuZCgpKQoKI2RlZmluZSByYW5kX2ludCBtdDE5OTM3IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwojZGVmaW5lIHJhbmRfbGwgbXQxOTkzN182NCBybmQoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKCmNvbnN0IGludCBtb2QgPSAxZTkgKyA3Owpjb25zdCBkb3VibGUgcGkgPSBhY29zKC0xKTsKY29uc3QgZG91YmxlIGVzcCA9IDFlLTc7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IEQ7CmludCBUX2M7CmludCBDXzEsIENfMjsKaW50IE5fMSwgTl8yOwoKaW50IGhbMTAwMDA1XTsKCmRlcXVlPGlpPiBPbGQsIE1pZGRsZSwgTmV3OwoKdm9pZCBhZGQoaW50IGRheSwgaW50IHZhbCkgewogICAgLi4uCn0KCnZvaWQgdXBkYXRlKGludCBwb3NfMSwgaW50IHBvc18yKSB7CiAgICAuLi4KfQoKaW50IGNoZWNrKGludCBtaWQpIHsKICAgIC8vIGFzc3VtZSBOXzEgPiBOXzIgYW5kIENfMSA8IENfMgogICAgLy8gSWYgbm90IHdlIGp1c3QgbmVlZCB0byB1c2Ugb25lIG9mIHRoZW0KCiAgICBpZihDXzEgPiBDXzIpIHsKICAgICAgICBzd2FwKE5fMSwgTl8yKTsKICAgICAgICBzd2FwKENfMSwgQ18yKTsKICAgIH0KICAgIGlmKE5fMSA8IE5fMikgewogICAgICAgIE5fMiA9IE5fMTsKICAgICAgICBDXzIgPSBDXzE7CiAgICB9CgogICAgT2xkLmNsZWFyKCk7CiAgICBNaWRkbGUuY2xlYXIoKTsKICAgIE5ldy5jbGVhcigpOwoKICAgIGludCBzdW0gPSBtaWQgKiBUX2MgLSBtaWQgKiBDXzE7CgogICAgYWRkKC0xMDAwMDAwLCBtaWQpOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gRDsgaSsrKSB7CiAgICAgICAgdXBkYXRlKGkgLSBOXzEsIGkgLSBOXzIpOwogICAgICAgIGludCB0bXAgPSAwOwogICAgICAgIHdoaWxlKE9sZC5zaXplKCkgJiYgdG1wIDwgaFtpXSkgewogICAgICAgICAgICAuLi4KICAgICAgICB9CgogICAgICAgIHdoaWxlKE1pZGRsZS5zaXplKCkgJiYgdG1wIDwgaFtpXSkgewogICAgICAgICAgICAuLi4KICAgICAgICB9CgogICAgICAgIGlmKHRtcCA8IGhbaV0pIHJldHVybiAtMTsKICAgICAgICBhZGQoaSwgaFtpXSk7CiAgICB9CiAgICByZXR1cm4gc3VtOwoKfQoKdm9pZCBzb2x2ZSgpIHsKCiAgICBjaW4gPj4gRCA+PiBOXzEgPj4gTl8yID4+IENfMSA+PiBDXzIgPj4gVF9jOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gRDsgaSsrKSBjaW4gPj4gaFtpXTsKCiAgICBpbnQgbCA9IDAsIHIgPSAxZTEyOwogICAgd2hpbGUociAtIGwgPiAyKSB7CiAgICAgICAgaW50IG1pZF8xID0gbCArICggciAtIGwgKSAvIDM7CgkJaW50IG1pZF8yID0gbCArICggciAtIGwgKSAvIDMgKiAyOwogICAgICAgIGludCB0bXAgPSBjaGVjayhtaWRfMSk7CiAgICAgICAgaWYodG1wIDwgMCB8fCB0bXAgPj0gY2hlY2sobWlkXzIpKSB7CiAgICAgICAgICAgIGwgPSBtaWRfMTsKICAgICAgICB9CiAgICAgICAgZWxzZSByID0gbWlkXzI7CiAgICB9CgogICAgaW50IGFucyA9IGNoZWNrKHIpOwoKICAgIGZvcihpbnQgaSA9IGw7IGkgPCByOyBpKyspIHsKICAgICAgICBpbnQgdG1wID0gY2hlY2soaSk7CiAgICAgICAgaWYodG1wIDwgMCkgY29udGludWU7CiAgICAgICAgYW5zID0gbWluKGFucywgdG1wKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zOwogICAgCn0KCnNpZ25lZCBtYWluKCkgewoKCiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wLmlucCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0Lm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgICNlbmRpZgoKCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CgogICAgaW50IHQgPSAxOwogICAgLy9jaW4gPj4gdDsKCiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9Ci8vICAgICAgUHJvVGVhbQovLyjCr2DCty7Ct8K0wq8pICjCr2DCty7Ct8K0wq8pCi8vYMK3LsK4KMKvYMK3LsK3wrTCrynCuCAuwrcKLy/Dl8Kww5cgYCDCty7CuC7Ct8K0IMOXwrDDlwo=