#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
#define ll long long
#define fi first
#define se second
#define pb push_back
#define pob pop_back
int main() {
//the booster of input and output :
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
//the body :
ll x, n, m, w, t;
cin >> x >> n >> m >> w >> t;
vector<ll> stn(n + 1);
vector<pair<ll, ll>> psg(m);
vector<ll> prft(n + 1, 0);
vector<ll> dp(m, 0);
for (int i = 0; i < n; ++i) {
cin >> stn[i];
}
stn[n] = x;
for (int i = 0; i < m; ++i) {
cin >> psg[i].fi >> psg[i].se;
}
sort(psg.begin(), psg.end(),greater<>());
for (int i = 0; i < m; ++i) {
for (int j = 0; j <= n; ++j) {
if (psg[i].fi < stn[j] % t) {
prft[j] += (x / t - stn[j] / t + (psg[i].fi < x % t)) * w - psg[i].se;
for (int k = 0; k < i; ++k) {
if (psg[k].fi > stn[j] % t)
dp[i] = max(dp[i], dp[k] + prft[j]);
}
}
}
dp[i] = max(dp[i], *max_element(prft.begin(), prft.end()));
}
ll total = w + (x / t) * (m + 1) * w;
for (int i = 0; i < m; ++i) {
if (psg[i].fi < x % t)
total += w;
}
cout << total - *max_element(dp.begin(), dp.end()) << endl;
// for (int i = 0; i < m; ++i) {
// cout << dp[i] << ' ';
// }
// cout << 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |