#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define int long long
#define pq priority_queue
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pp pop_back
#define F first
#define S second
using namespace std;
int n, m, k, a, b, c, t;
int v[3010];
vector<int> st;
int ans;
void read() {
cin >> n >> m >> k >> a >> b >> c >> t;
for(int i = 0; i < m; i++) cin >> v[i];
k -= m;
v[m] = n + 1;
}
bool check(int i) {
int time = t - (v[i] - 1) * b;
int dis = v[i+1] - v[i];
if (time < 0) return 0;
int d = min(dis, time / a + 1);
ans += d;
dis -= d;
time -= c * d;
int k1 = k;
while (k1-- && dis && time >= 0) {
d = min(dis, time / a + 1);
st.pb(d);
dis -= d;
time -= d * c;
}
return 1;
}
void calc() {
for (int i = 0; i < m; i++) {
if (!check(i)) break ;
}
sort(rall(st));
k = min(k, (int)st.size());
for (int i = 0; i < k; i++) {
ans += st[i];
}
}
void print() {
cout << ans - 1;
}
void solve () {
read();
calc();
print();
}
signed main() {IOS 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... |