제출 #71095

#제출 시각아이디문제언어결과실행 시간메모리
71095InovakLong Distance Coach (JOI17_coach)C++14
0 / 100
4 ms612 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;
        for(int j = m; j >= 1; j--) {
            if(u[j] || xx < p[j].fr) continue;
            if(p[j].sc > w * (((x - p[j].fr) / t) + 1 - yy)) break;
            u[j] = 1;
            ans -= w * (((x - p[j].fr) / t) + 1 - yy);
            ans += p[j].sc;
        }
    }
    cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...