Submission #1182434

#TimeUsernameProblemLanguageResultExecution timeMemory
1182434ducanh0811Cloud Computing (CEOI18_clo)C++20
100 / 100
509 ms2052 KiB
#include <bits/stdc++.h> using namespace std; #define MAXN 4002 #define MAXC 100005 int n, m; struct event{ int c, f, v; }; event C[MAXN]; long long dp[MAXC]; long long DP[MAXC]; void solve(){ cin >> n; int sumcores = 0; for (int i = 1; i <= n; ++i){ cin >> C[i].c >> C[i].f >> C[i].v; C[i].v = -C[i].v; sumcores += C[i].c; } cin >> m; for (int i = n + 1; i <= n + m; ++i){ cin >> C[i].c >> C[i].f >> C[i].v; C[i].c = -C[i].c; } sort(C + 1, C + 1 + n + m, [](const event &a, const event &b){ if (a.f == b.f) return a.v < b.v; return a.f > b.f; }); memset(dp, -0x3f, sizeof dp); memset(DP, -0x3f, sizeof DP); for (int i = 0; i <= sumcores; ++i) dp[i] = DP[i] = -1e16; dp[0] = DP[0] = 0; for (int i = 1; i <= n + m; ++i){ for (int j = 0; j <= sumcores; ++j){ int prev = j - C[i].c; if (0 <= prev && prev <= sumcores) DP[j] = max(DP[j], dp[prev] + C[i].v); } for (int j = 0; j <= sumcores; ++j){ dp[j] = DP[j]; } } long long res = -1e16; for (int i = 0; i <= sumcores; ++i) res = max(res, dp[i]); cout << res; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); solve(); return 0; }
#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...