제출 #1199478

#제출 시각아이디문제언어결과실행 시간메모리
1199478efishelSemiexpress (JOI17_semiexpress)C++20
100 / 100
40 ms25116 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector <ll>;
using ii = pair <ll, ll>;
using vii = vector <ii>;

const ll INF = ll(1E18)+16;

int main () {
    cin.tie(nullptr) -> sync_with_stdio(false);
    ll n, m, k;
    cin >> n >> m >> k;
    k -= m;
    ll a, b, c;
    cin >> a >> b >> c;
    ll T;
    cin >> T;
    vll ve(m);
    for (ll &i : ve) cin >> i, i--;
    auto fincs = [&](ll i, ll len) {
        ll tLeft = T - i*b;
        vll ans(k+1, 0);
        if (tLeft < 0) return ans;
        // ans[j] = number of extra cities reached using j semi-express stops
        ans[0] = min(tLeft/a, len);
        for (ll j = 1; j <= k; j++) {
            ll tLeftLeft = tLeft - (ans[j-1]+1)*c;
            if (tLeftLeft < 0) { ans[j] = ans[j-1]; continue; }
            ans[j] = min(ans[j-1] + 1 + tLeftLeft/a, len);
        }
        for (ll j = k; j > 0; j--)
            ans[j] -= ans[j-1];
        return ans;
    };
    vector <vll> mat;
    ll last = 0;
    ll ans = 0;
    vll th;
    for (ll i : ve) {
        if (i == 0) continue;
        mat.push_back(fincs(last, i-last-1));
        ans += mat.back()[0];
        if (i*b <= T) ans++;
        mat.back().erase(mat.back().begin());
        for (ll i : mat.back()) th.push_back(i);
        // cerr << last << "---" << i << '\n';
        // for (ll j : mat.back()) cerr << setw(2) << j << ' ';
        // cerr << '\n';
        last = i;
    }
    sort(th.rbegin(), th.rend());
    for (ll i = 0; i < k; i++) {
        ans += th[i];
    }
    cout << ans << '\n';
    // vll dp(k+1, 0), nDp(k+1, 0);
    // for (ll i : ve) {
    //     vll th = fincs(last, i-last-1);
    //     for (ll j = 0; j <= k; j++) {
    //         ;
    //     }
    // }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...