Submission #669154

#TimeUsernameProblemLanguageResultExecution timeMemory
669154Dec0DeddSemiexpress (JOI17_semiexpress)C++14
100 / 100
1 ms340 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<ll, ll> #define pp pair<ll, pii> const int M = 3e3+1; ll s[M], n, m, k, a, b, c, t; int main() { cin>>n>>m>>k; k-=m; cin>>a>>b>>c>>t; for (int i=1; i<=m; ++i) cin>>s[i]; priority_queue<pp> pq; ll ans=-1; for (int i=1; i<m; ++i) { ll tmp=b*(s[i]-1), x=(t-tmp)/a; if (b*(s[i]-1) > t) continue; if (s[i]+x >= s[i+1]) x=s[i+1]-s[i]-1; ans+=x+1; ll nxt=s[i]+x+1, sz=s[i+1]-nxt; ll cost=b*(s[i]-1)+(nxt-s[i])*c; if (cost > t) continue; ll h=(t-cost)/a+1; if (min(sz, h) <= 0) continue; pq.push({min(sz, h), {i, nxt}}); } while (k-- && !pq.empty()) { pp g=pq.top(); pq.pop(); ans+=g.first; ll nxt=g.second.second+g.first, i=g.second.first; ll cost=b*(s[i]-1)+(nxt-s[i])*c, sz=s[i+1]-nxt; if (cost > t) continue; ll h=(t-cost)/a+1; if (min(sz, h) <= 0) continue; pq.push({min(sz, h), {i, nxt}}); } if (b*(s[m]-1) <= t) ++ans; cout<<ans<<"\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...