Submission #702721

#TimeUsernameProblemLanguageResultExecution timeMemory
702721stevancvSemiexpress (JOI17_semiexpress)C++14
100 / 100
13 ms4552 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define sp ' ' #define en '\n' #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) using namespace std; const int N = 1e6 + 2; const int inf = 2e9; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int m, k; ll n, a, b, c, t; cin >> n >> m >> k >> a >> b >> c >> t; vector<ll> v(m); for (int i = 0; i < m; i++) { cin >> v[i]; v[i] -= 1; } ll ans = 0; vector<ll> o; for (int i = 0; i < m - 1; i++) { if (b * v[i] <= t) ans += 1; else break; ll nxt = (t + v[i] * (a - b)) / a + 1; ans += min(nxt, v[i + 1]) - v[i] - 1; for (int j = 0; j < k - m; j++) { if (nxt >= v[i + 1]) break; if (b * v[i] + c * (nxt - v[i]) > t) break; ll gde = (t - b * v[i] - c * (nxt - v[i]) + a * nxt) / a; smin(gde, v[i + 1] - 1); o.push_back(gde - nxt + 1); nxt = gde + 1; } } if (b * v.back() <= t) ans += 1; sort(o.rbegin(), o.rend()); for (int i = 0; i < min((int) o.size(), k - m); i++) ans += o[i]; cout << ans - 1 << en; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...