Submission #1308191

#TimeUsernameProblemLanguageResultExecution timeMemory
1308191shirokitoSemiexpress (JOI17_semiexpress)C++20
0 / 100
1 ms572 KiB
#include <bits/stdc++.h> using namespace std; #define all(a) (a).begin(), (a).end() using ll = long long; const int N = 1e5 + 24; int n, m, k, s[N]; ll A, B, C, maxTime; void solve() { cin >> n >> m >> k; cin >> A >> B >> C; cin >> maxTime; for (int i = 1; i <= m; i++) { cin >> s[i]; } s[m + 1] = n + 1; ll ans = 0; vector<ll> gain; for (int i = 1; i <= m; i++) { ll L = s[i], R = s[i + 1] - 1; for (ll cnt = 0, l = L; l <= R && cnt < k - m; cnt++) { ll current = (L - 1) * B + (l - L) * C; if (current > maxTime) break; ll r = min(R, (maxTime - current + l * A) / A); if (r < l) break; if (cnt == 0) { ans += r - l + 1; } else { // cout << l << ' ' << r << '\n'; gain.push_back(r - l + 1); } l = r + 1; } } sort(all(gain)); int cntGet = min((int)gain.size(), k - m); while (cntGet--) { ll g = gain.back(); gain.pop_back(); ans += g; } cout << ans - 1 << '\n'; } signed main() { cin.tie(0) -> sync_with_stdio(0); int T = 1; // cin >> T; while (T--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...