Submission #1257455

#TimeUsernameProblemLanguageResultExecution timeMemory
1257455tvgkSemiexpress (JOI17_semiexpress)C++20
18 / 100
1 ms780 KiB
#include<bits/stdc++.h> using namespace std; #define task "a" #define se second #define fi first #define ll long long #define ii pair<ll, ll> const long mxN = 3e3 + 7; int n, m, k; ll local, ex, semi, cost[mxN], mx; ii a[mxN]; priority_queue<ii, vector<ii>, greater<ii>> pq; void Add(int j) { ll tmp = cost[j] + (a[j].se - a[j].fi) * semi; if (tmp > mx || a[j].se == a[j + 1].fi) return; pq.push({min(a[j + 1].fi - a[j].se, (mx - tmp) / local + 1), j}); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen(task".INP", "r", stdin); //freopen(task".OUT", "w", stdout); cin >> n >> m >> k; cin >> local >> ex >> semi; cin >> mx; k -= m; for (int i = 1; i <= m; i++) cin >> a[i].fi; a[m + 1].fi = n + 1; a[0].se = 1; int ans = 0; for (int i = 1; i <= m; i++) { cost[i] = (a[i].fi - 1) * ex; a[i].se = a[i].fi; if (cost[i] <= mx) a[i].se = min(a[i + 1].fi, a[i].fi + (mx - cost[i]) / local + 1); ans += a[i].se - a[i].fi; } for (int i = 1; i <= m; i++) Add(i); while (pq.size() && k) { ii j = pq.top(); pq.pop(); k--; ans += j.fi; a[j.se].se += j.fi; Add(j.se); } cout << ans - 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...