#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fr first
#define sc second
#define all(x) (x).begin(), (x).end()
const int MOD = 1e9 + 7;
const int MAXN = 2e5 + 5; //MUDAR O LIMITE
const int INF1 = 1e9 + 5;
const long long INF = 1e18 + 5;
void solve() {
int N, M, K, A, B, C, T;
cin >> N >> M >> K >> A >> B >> C >> T;
priority_queue<tuple<int,int,int>,vector<tuple<int,int,int>>> pq;
K -= M;
vector<int> s(M + 1);
for(int i = 1; i <= M; i++) {
cin >> s[i];
}
int ans = -1;
for(int i = 1; i < M; i++) {
int L = s[i + 1] - s[i];
int t = B * (s[i] - 1);
if(t > T) continue;
int q = min(L, (T - t) / A + 1);
L -= q;
ans += q;
t += q * C;
if(t > T) continue;
q = min(L, (T - t) / A + 1);
pq.push({q, L - q, t});
}
if((N - 1) * B <= T) ans++;
while(K-- && pq.size()) {
auto[q, L, t] = pq.top();
pq.pop();
ans += q;
t += q * C;
if(t > T) continue;
q = min(L, (T - t) / A + 1);
pq.push({q, L - q, t});
}
cout << ans << "\n";
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int tt;
tt = 1;
//cin >> tt;
while(tt--) {
solve();
}
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... |