#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n,m,k; cin >> n >> m >> k;
long long A, B, C, T, odp = 0;
cin >> A >> B >> C >> T;
int s[m];
for (int i = 0; i < m; i++)
cin >> s[i];
priority_queue<tuple<long long,long long,int,int>> q;
for (int i = 1; i < m; i++) {
long long d = B*(s[i-1]-1);
if (d > T)
continue;
long long ile = min((T-d)/A + 1, 1ll*(s[i]-s[i-1]));
odp += ile, d += C*ile;
if (s[i-1]+ile < 1ll*s[i] && d <= T)
q.push({min((T-d)/A+1,s[i]-s[i-1]-ile),d,s[i-1]+ile,i});
}
for (int i = 0; i < k-m && !q.empty(); i++) {
long long ile = get<0>(q.top()), d = get<1>(q.top());
int ind = get<2>(q.top()), j = get<3>(q.top());
odp += ile, d += C*ile, ind += ile, q.pop();
if (ind < s[j] && d <= T)
q.push({min((T-d)/A+1,1ll*(s[j]-ind)),d,ind,j});
}
odp--;
if (B*(s[m-1]-1) <= T)
odp++;
cout << odp << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |