제출 #1063868

#제출 시각아이디문제언어결과실행 시간메모리
1063868vjudge1Cloud Computing (CEOI18_clo)C++17
0 / 100
1 ms604 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn = 2003; const ll inf = 1e18; int n, m; struct Edge{ int c; ll f, v; }; Edge st[2 * maxn + 7]; bool cmp(Edge a, Edge b) { if(a.f == b.f) return a.c > b.c; return a.f > b.f; } int main() { // freopen("CLOUDCOMPUTING.INP", "r", stdin); // freopen("CLOUDCOMPUTING.OUT", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for(int i = 1; i <= n; i++) { int c; ll f, v; cin >> c >> f >> v; st[i].c = c; st[i].f = f; st[i].v = -v; } cin >> m; for(int i = 1 + n; i <= n + m; i++) { int c; ll f, v; cin >> c >> f >> v; st[i].c = -c; st[i].f = f; st[i].v = v; } sort(st + 1, st + n + m + 1, cmp); vector<vector<ll>>dp(n + m + 8, vector<ll>(100, -inf)); ll ans = -inf; for(int i = 0; i <= n + m; i++) { dp[i][0] = 0; // cout << st[i].c << ' ' << st[i].f << ' ' << st[i].v << '\n'; } for(int i = 1; i <= n + m; i++) { for(int j = 50; j >= 1; j--) { if(j >= st[i].c && dp[i - 1][j - st[i].c] != -inf) { dp[i][j] = max(dp[i][j], dp[i - 1][j - st[i].c] + st[i].v); // cout << i << ' ' << j << ' ' << dp[i - 1][j - st[i].c] << ' ' << dp[i][j] << '\n'; dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]); ans = max(ans, dp[i][j]); } } } cout << ans; }
#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...