제출 #940061

#제출 시각아이디문제언어결과실행 시간메모리
940061vjudge1Cloud Computing (CEOI18_clo)C++17
100 / 100
410 ms1372 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define ar array #define pb push_back #define ln '\n' #define int long long using i64 = long long; template <class F, class _S> bool chmin(F &u, const _S &v){ bool flag = false; if ( u > v ){ u = v; flag |= true; } return flag; } template <class F, class _S> bool chmax(F &u, const _S &v){ bool flag = false; if ( u < v ){ u = v; flag |= true; } return flag; } //const int N = 1e4 + 1; const int inf = 1e16; signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector <ar<int,4>> a; int N = 1; for ( int i = 0; i < n; i++ ){ int c, f, v; cin >> c >> f >> v; a.pb({f, 1, c, v}); N += c; } int m; cin >> m; for ( int i = 0; i < m; i++ ){ int c, f, v; cin >> c >> f >> v; a.pb({f, 0, c, v}); } sort(all(a)); reverse(all(a)); vector <int> dp(N, -inf); dp[0] = 0; for ( auto &[f, t, c, v]: a ){ if ( t == 0 ){ // customer for ( int j = c; j < N; j++ ){ chmax(dp[j - c], dp[j] + v); } } else{ for ( int j = N - 1; j >= 0; j-- ){ chmax(dp[min(N - 1, j + c)], dp[j] - v); } } } cout << *max_element(all(dp)); cout << '\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...