Submission #947204

#TimeUsernameProblemLanguageResultExecution timeMemory
947204lulwpopCloud Computing (CEOI18_clo)C++14
100 / 100
314 ms1624 KiB
#include <bits/stdc++.h>
#define fr first
#define sc second
#define all(x) (x).begin(), (x).end()
#define pw(x) (1ll << x)
#define pb push_back
#define endl '\n'
#define sz(x) (int)((x).size())
#define vec vector

using namespace std;

template <typename T> inline bool umin (T &a, const T &b) { if (a > b) { a = b; return 1; } return 0; }
template <typename T> inline bool umax (T &a, const T &b) { if (a < b) { a = b; return 1; } return 0; }

typedef long double ld;
typedef long long ll;
typedef unsigned long long ull;
typedef pair <int, int> pii;

inline void solve () {
    int n; cin >> n;
    vector <array <ll, 4>> ful;
    vector <ll> c (n), f (n), v (n);
    for (int i = 0; i < n; ++i) {
        cin >> c[i] >> f[i] >> v[i];
        ful.pb({f[i], 1, v[i], c[i]});
    }
    int m; cin >> m;
    vector <ll> qc (m), qf (m), qv (m);
    for (int i = 0; i < m; ++i) {
        cin >> qc[i] >> qf[i] >> qv[i];
        ful.pb({qf[i], 0, qv[i], qc[i]});
    }
    const int MX = 50 * n + 51;
    vector <ll> dp (MX, -1e18); 
    dp[0] = 0;
    sort(all(ful));
    while (sz(ful)) {
        auto [f, type, v, c] = ful.back();
        if (type == 1) {
            for (int i = MX - 1 - c; i >= 0; --i) {
                dp[i + c] = max(dp[i + c], dp[i] - v);
            }
        }
        else {
            for (int i = c; i < MX; ++i) {
                dp[i - c] = max(dp[i - c], dp[i] + v);
            }
        }
        ful.pop_back();
    }
    cout << *max_element(all(dp));
}

signed main () {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int t = 1; // cin >> t;
    while (t--) solve();
    return 0;
}

Compilation message (stderr)

clo.cpp: In function 'void solve()':
clo.cpp:40:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   40 |         auto [f, type, v, c] = ful.back();
      |              ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...