Submission #1308090

#TimeUsernameProblemLanguageResultExecution timeMemory
1308090wangzhiyi33Semiexpress (JOI17_semiexpress)C++20
100 / 100
2 ms584 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int n,m,k,a,b,c,ti; int pos[3002]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n>>m>>k>>a>>b>>c>>ti; for(int q=1;q<=m;q++){ cin>>pos[q]; } int ans=0; priority_queue<array<int,3> >pq; // tmbh, akh, grup for(int q=1;q<m;q++) { int hrs=(pos[q]-1)*b; if(hrs>ti)break; int nxt=(ti-hrs)/a; nxt=min(nxt,pos[q+1]-pos[q]-1); nxt=pos[q]+nxt; ans+=(nxt-pos[q]+1); if(nxt+1<pos[q+1]){ int sisa=ti-(pos[q]-1)*b-(nxt+1-pos[q])*c; if(sisa<0)continue; int brp=sisa/a; brp=min(brp,pos[q+1]-nxt-2); pq.push({brp+1,nxt+brp+1,q}); } } k-=m; while(k && pq.size()){ array<int,3>apa=pq.top(); pq.pop(); k--; // cout<<apa[0]<<" "<<apa[1]<<" "<<apa[2]<<endl; ans+=apa[0]; if(apa[1]+1>=pos[apa[2]+1])continue; int sisa=ti-(pos[apa[2]]-1)*b-(apa[1]+1-pos[apa[2]])*c; if(sisa<0)continue; int brp=sisa/a; brp=min(brp,pos[apa[2]+1]-apa[1]-2); pq.push({brp+1,apa[1]+brp+1,apa[2]}); // k--; } ans--; if((n-1)*b<=ti){ ans++; } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...