Submission #166186

#TimeUsernameProblemLanguageResultExecution timeMemory
166186Eae02Cloud Computing (CEOI18_clo)C++17
100 / 100
568 ms2300 KiB
#include <bits/stdc++.h> #define all(x) begin(x), end(x) using ll = long long; using namespace std; struct Item { ll c, f, p; bool operator<(const Item& o) const { return make_tuple(-f, -c) < make_tuple(-o.f, -o.c); } }; vector<Item> items; int main() { ll n; cin >> n; for (ll i = 0; i < n; i++) { Item& item = items.emplace_back(); cin >> item.c >> item.f >> item.p; item.p = -item.p; } ll m; cin >> m; for (ll i = 0; i < m; i++) { Item& item = items.emplace_back(); cin >> item.c >> item.f >> item.p; item.c = -item.c; } sort(all(items)); constexpr ll MAX_C = 2000 * 50 + 10; vector<ll> dpPrev(MAX_C); vector<ll> dpNext(MAX_C); for (ll i = items.size() - 1; i >= 0; i--) { for (ll c = 0; c < -items[i].c; c++) { dpNext[c] = dpPrev[c]; } for (ll c = max(-items[i].c, 0LL); c < MAX_C; c++) { dpNext[c] = max(dpPrev[c], dpPrev[c + items[i].c] + items[i].p); } dpNext.swap(dpPrev); } cout << dpPrev[0] << "\n"; }
#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...