Submission #1340519

#TimeUsernameProblemLanguageResultExecution timeMemory
1340519NipphitchSemiexpress (JOI17_semiexpress)C++20
100 / 100
6 ms4540 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int M=3005;

int n,m,k,a,b,c,t,s[M],ans;
priority_queue <int> pq;

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m >> k >> a >> b >> c >> t;
    for(int i=1;i<=m;i++) cin >> s[i];
    s[m+1]=n;
    for(int i=1;i<=m;i++){
        int b_t=(s[i]-1)*b;
        if(b_t<=t){
            ans++;
            if(i==m) continue;
            ans+=min((s[i+1]-s[i]-1),(t-b_t)/a);
            //cout << 1 << " , " << min((s[i+1]-s[i]-1),(t-b_t)/a) << "\n";
            int p_now=s[i]+min((s[i+1]-s[i]-1),(t-b_t)/a);
            //cout << s[i] << " : ";
            for(int j=p_now+1,tmp=1;j<s[i+1] && tmp<=k-m;tmp++){
                int cnt=1;
                int c_t=(j-s[i])*c;
                if(b_t+c_t>t) break;
                //cout << j << " ";
                cnt+=min((s[i+1]-j-1),(t-b_t-c_t)/a);
                j+=min((s[i+1]-j-1),(t-b_t-c_t)/a);
                j++;
                pq.push(cnt);
            }
            //cout << "\n";
        }
    }
    //cout << ans;
    for(int i=1;i<=k-m && !pq.empty();i++){
        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...