| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1291451 | wedonttalkanymore | Semiexpress (JOI17_semiexpress) | C++20 | 43 ms | 33232 KiB |
#include <bits/stdc++.h>
/*
Ngay hay dem
Voi troi giac mo em dem
*/
using namespace std;
using ll = long long;
#define int long long
#define pii pair<ll, ll>
#define fi first
#define se second
const ll N = 2e5 + 5, inf = 1e18, mod = 1e9 + 7, block = 320, lim = 19;
int n, m, k, A, B, C, T;
int a[N];
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
if (fopen(".inp", "r")) {
freopen(".inp", "r", stdin);
freopen(".out", "w", stdout);
}
cin >> n >> m >> k;
cin >> A >> B >> C;
cin >> T;
for (int i = 1; i <= m; i++) cin >> a[i];
a[m + 1] = n + 1;
int ans = 0;
priority_queue <int> pq;
// if ((n - 1) * B <= T) ans++;
for (int i = 1; i <= m; i++) {
int cost = (a[i] - 1) * B; // dung express
if (cost > T) break;
int remain = (T - cost) / A; // dung local
int range = min(a[i + 1] - 1, a[i] + remain);
ans += range - a[i] + 1;
if (a[i] == 1) ans--;
for (int j = 0; j < k && range < a[i + 1] - 1; j++) {
int tmp = cost + ((range + 1) - a[i]) * C; // dung semiexpress tu a[i] + 1 -> range + 1
if (tmp > T) break;
int remain = (T - tmp) / A; // dung local
int newrange = min(a[i + 1] - 1, range + 1 + remain);
pq.push(newrange - range);
range = newrange;
}
}
for (int i = 0; i < k - m; i++) {
if (pq.size()) {
ans += pq.top();
pq.pop();
}
}
cout << ans;
return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
