Submission #71236

#TimeUsernameProblemLanguageResultExecution timeMemory
71236InovakLong Distance Coach (JOI17_coach)C++14
0 / 100
4 ms804 KiB
#include <bits/stdc++.h> #define fr first #define sc second #define pb push_back #define mk make_pair #define ll long long #define OK puts("OK"); #define sz(s) (int)s.size() #define all(s) s.begin(), s.end() using namespace std; const int N = 1e6+10; const ll inf = 1e18+10; ll x, n, m, w, t, ans; ll s[N]; pair <ll, ll> p[N]; bool u[N]; int main() { cin >> x >> n >> m >> w >> t; for(int i = 1; i <= n; i++) cin >> s[i]; for(int i = 1; i <= m; i++) { cin >> p[i].fr >> p[i].sc; if(x > p[i].fr) { ll xx = x - p[i].fr; ans += w * ((xx / t) + 1); } } ans += w * ((x / t) + 1); sort(p + 1, p + m + 1); sort(s + 1, s + n + 1); s[++n] = x; for(int i = 1; i <= n; i++) { ll xx = s[i] % t, yy = s[i] / t; ll pp = 0, ss = 0, mi = 0, mn = m + 1, rr = m + 1; for(int j = m; j >= 1; j--) { if(xx < p[j].fr) rr = j; if(u[j] || xx < p[j].fr) continue; pp += p[j].sc; ss -= w * (((x - p[j].fr) / t) + 1 - yy); if(mi > ss + pp) { mi = ss + pp; mn = j; } } for(int j = mn; j < rr; j++) u[j] = 1; ans += mi; } cout << ans << endl; } /** 17 1 4 10 10 17 2 4 4 11 8 12 9 10 **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...