Submission #1215250

#TimeUsernameProblemLanguageResultExecution timeMemory
1215250AriadnaSalesman (IOI09_salesman)C++20
21 / 100
3096 ms15996 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

int n, u, d, s;

struct Fair {
    int t, l, m;
};  
bool comp(Fair A, Fair B) {
    return A.t < B.t;
}

int price(int a, int b) {
    return max((b-a)*d, (b-a)*u);
}

signed main() {
    cin >> n >> u >> d >> s;
    u*=-1;

    vector<Fair> fairs(n);
    for (int i = 0; i < n; ++i) cin >> fairs[i].t >> fairs[i].l >> fairs[i].m;
    sort(fairs.begin(), fairs.end(), comp);

    vector<int> dp(n);

    for (int i = n-1; i >= 0; --i) {
        dp[i] += fairs[i].m;
        int aux = -price(fairs[i].l, s);
        for (int j = n-1; j > i; --j) {
            aux = max(aux, dp[j]-price(fairs[i].l, fairs[j].l));
        }
        dp[i] += aux;
    }

    int ans = 0;
    for (int i = 0; i < n; ++i) ans = max(ans, dp[i]-price(s, fairs[i].l));
    cout << ans << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...