제출 #1329725

#제출 시각아이디문제언어결과실행 시간메모리
1329725the_ZHERSemiexpress (JOI17_semiexpress)C++20
100 / 100
11 ms4540 KiB
#include <bits/stdc++.h>
#define int unsigned long long
#define boost ios_base::sync_with_stdio(0);cin.tie(0);
const int inf=1e18;
const int N=2e5+100;
const int N1=1e5+5;
const int mod=1e9+7;
const int k1=sqrt(N1);
using namespace std;
int dp[3005][3005];
int dp1[3005][3005];
int v[N];
vector<int>v1;
signed main(){
    boost;
    int n,m,k;
    cin>>n>>m>>k;
    int a,b,c;
    cin>>a>>b>>c;
    int t;
    cin>>t;
    int ans=0;
    for(int i=1;i<=m;i++){
        cin>>v[i];
        if((v[i]-1)*b<=t){
            ans++;
        }
    }
    ans--;
    for(int i=1;i<m;i++){
        if((v[i]-1)*b>t){
            break;
        }
        int r=v[i+1]-1;
        if(v[i]==r){
            continue;
        }
        int cnt2=(v[i]-1)*b;
        int cnt3=(t-cnt2)/a;
        cnt3=min(cnt3,r-v[i]);
        int l=v[i]+cnt3;
        ans+=cnt3;
        if(l==r){
            continue;
        }
        for(int j=1;j<=k-m;j++){
            int cnt4=((l+1)-v[i])*c;
            cnt4+=cnt2;
            if(cnt4>t){
                break;
            }
            cnt3=(t-cnt4)/a;
            cnt3++;
            cnt3=min(cnt3,r-l);
            v1.push_back(cnt3);
            l+=cnt3;
            if(l==r){
                break;
            }
        }
    }
    sort(v1.begin(),v1.end());
    reverse(v1.begin(),v1.end());
    int mx=0;
    int cnt5=k-m;
    int cnt6=v1.size();
    for(int i=0;i<min(cnt5,cnt6);i++){
        ans+=v1[i];
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...