Submission #242628

#TimeUsernameProblemLanguageResultExecution timeMemory
242628nvmdavaSemiexpress (JOI17_semiexpress)C++17
100 / 100
12 ms2552 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define N 5005
const ll MOD = 1000000007;
const int INF = 0x3f3f3f3f;

int n, m, k;
ll a, b, c, t;
priority_queue<int> pq;
ll ans = 0;
int d[N];

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>m>>k;
    cin>>a>>b>>c>>t;

    for(int i = 0; i < m; ++i){
        cin>>d[i];
        --d[i];
    }
    d[m] = n;
    k -= m;

    for(int i = 1; i <= m; ++i){
        ll w = t - d[i - 1] * b;
        n = d[i] - d[i - 1];
        if(w < 0) break;
        int s = min((ll)n, w / a + 1);
        ans += s;
        n -= s;
        w -= s * c;
        int q = k;
        while(w >= 0 && n && q--){
            s = min((ll)n, w / a + 1);
            pq.push(s);
            w -= s * c;
            n -= s;
        }
    }

    while(!pq.empty() && k--){
        ans += pq.top();
        pq.pop();
    }
    cout<<ans - 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...