Submission #1157656

#TimeUsernameProblemLanguageResultExecution timeMemory
1157656koukirocksSemiexpress (JOI17_semiexpress)C++20
100 / 100
7 ms11588 KiB
#include<bits/stdc++.h> #define speed ios_base::sync_with_stdio(0); cin.tie(0) using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; template<class T> using vvector = vector<vector<T>>; int main() { speed; ll n,m,k; cin>>n>>m>>k; ll a,b,c; cin>>a>>b>>c; ll T; cin>>T; vector<ll> s(m+1); for (ll i=1;i<=m;i++) { cin>>s[i]; s[i]--; } ll sp=k-m; vvector<ll> rew(m+1,vector<ll>(sp+5)); for (ll i=1;i<m;i++) { ll now=(T+s[i]*(a-b))/a+1; if (now<=s[i]) { for (ll k=0;k<=sp;k++) rew[i][k]=0; continue; } for (ll j=0;j<=sp;j++) { if (now>=s[i+1]) { for (ll k=j;k<=sp;k++) rew[i][k]=s[i+1]-s[i]; break; } rew[i][j]=now-s[i]; // cout<<i<<" "<<j<<" "<<now<<" ij now\n"; now=(T+(a-c)*now+(c-b)*s[i])/a+1; } for (ll j=sp;j>=1;j--) rew[i][j]-=rew[i][j-1]; // for (int j=0;j<=sp;j++) cout<<rew[i][j]<<" "; // cout<<"\n"; } priority_queue<pll> Q; ll ans=0; vector<ll> pnt(m+1,1); for (ll i=1;i<m;i++) { ans+=rew[i][0]; Q.push({rew[i][1],i}); } for (ll i=1;i<=sp;i++) { auto [v,id]=Q.top(); Q.pop(); ans+=v; Q.push({rew[id][++pnt[id]],id}); } cout<<ans+(n*b-b<=T)-1<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...