# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1105291 | Lakshya108 | Cloud Computing (CEOI18_clo) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
// Macros
#define pb push_back
#define pf push_front
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define up(v) upper_bound(v)
#define low(v) lower_bound(v)
// Read and Print
#define read(a, n) for(ll i = 0; i < n; ++i) cin >> a[i];
#define print(a, n) for(ll i = 0; i < n; ++i){ cout << a[i] << " ";} cout << "\n";
#define endl "\n"
#define sp " "
// Typedefs
typedef long long ll;
typedef long double ld;
typedef long long int lli;
typedef pair<ll, ll> pll;
typedef pair<lli, lli> plli;
typedef pair<int, int> pii
typedef vector<lli> vi;
typedef vector<vector<lli>> vvi;
using vec = vector<int>;
// Constants
const ll mxn = 1e6 + 5;
const ll mod = 1e9 + 7;
// Solve
const ll N = 1e5 + 5;
void solve(){
ll n;
cin >> n;
vi c(n), f(n), v(n);
vector<tuple<ll, ll, ll>> a;
ll sum = 0;
for(ll i = 0; i < n; i++){
cin >> c[i] >> f[i] >> v[i];
a.pb({f[i], c[i], -v[i]});
sum += c[i];
}
ll m;
cin >> m;
vector<ll> C(m), F(m), V(m);
for(ll i = 0; i < m; i++){
cin >> C[i] >> F[i] >> V[i];
a.pb({F[i], C[i], V[i]});
}
sort(rall(a));
vi dp(sum + 1, -mod);
dp[0] = 0;
for(auto [i, j, k] : a){
if(k > 0){
for(ll l = j; l <= sum; l++){
dp[l - j] = max(dp[l - j], dp[l] + k);
}
} else {
for(ll l = sum - j; l >= 0; l--){
dp[l + j] = max(dp[l + j], dp[l] + k);
}
}
}
sort(rall(dp));
cout << dp[0] << endl;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}