Submission #1184845

#TimeUsernameProblemLanguageResultExecution timeMemory
1184845NAMINLong Distance Coach (JOI17_coach)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> #define endl "\n" #define ll long long using namespace std; ll N,M,X,T,W; struct passagerType{ ll d,c; bool operator<(const passagerType p)const{ return p.d > d; } }; ll calcNbX(ll D,ll k){ return (k-D)/T+1; } void solve(){ cin >> X >> N >> M >> W >> T; vector<ll> hub(N); vector<passagerType> passager(M); for(int i=0;i<N;i++) cin >> hub[i]; for(int i=0;i<M;i++) cin >> passager[i].d >> passager[i].c; hub.push_back(X); sort(hub.begin(),hub.end()); sort(passager.begin(),passager.end()); ll ans = 0; for(ll h : hub){ passagerType cur_hub = {h%T,-1}; int end = lower_bound(passager.begin(),passager.end(),cur_hub) -passager.begin()-1; ll costLeave=0,costKeep=0,mxDif=0; int bestIdx = -1; for(int i=end;i>=0;i--){ costLeave += passager[i].c; costKeep += 1LL*(calcNbX(passager[i].d,X-1)-calcNbX(passager[i].d,h-1)+1)*W; if(mxDif < costKeep-costLeave){ bestIdx = i; mxDif = costKeep-costLeave; } } vector<passagerType> nextPassager; for(int i=0;i<passager.size();i++){ if(bestIdx != -1 && i >= bestIdx && i <= end){ ans += 1LL*(calcNbX(passager[i].d,h-1)-1)*W+passager[i].c; } else nextPassager.push_back(passager[i]); } passager = nextPassager; } for(int i=0;i<passager.size();i++){ ans += calcNbX(passager[i].d,X-1)*W; } ans += calcNbX(0,X-1)*W; cout << ans << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(0); int t = 1; //cin >> t; while(t--){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...