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>
#define all(x) x.begin(), x.end()
#define sz(x) (int) x.size()
#define endl '\n'
#define pb push_back
#define _ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ii = pair<int,int>;
using iii = tuple<int,int,int>;
const ll inf = 1e18;
const int mod = 1e9+7;
const int maxn = 2010;
template<typename X, typename Y> bool ckmin(X& x, const Y& y) { return (y < x) ? (x=y,1):0; }
template<typename X, typename Y> bool ckmax(X& x, const Y& y) { return (x < y) ? (x=y,1):0; }
struct operation{
    ll c, f, v;
    bool type;
} v[2*maxn];
//dp[2*maxn][maxn*50] ->
//100*maxn^2 -> 4s! não funciona...
ll dp[2][55*maxn];
int main(){_
    int n;cin>>n;
    int bound = 0;
    for(int i=1;i<=n;++i)cin>>v[i].c>>v[i].f>>v[i].v, v[i].type = 0, bound += v[i].c;
    int m;cin>>m;
    
    for(int i=1+n;i<=n+m;++i)cin>>v[i].c>>v[i].f>>v[i].v, v[i].type = 1;
    sort(v+1, v+1+n+m, [&](operation x,operation y){return x.f>y.f;});
    for(int i=0;i<=bound;++i)dp[0][i] = dp[1][i] = -inf;
    dp[0][0] = 0;
    
    for(int i=1;i<=n+m;++i){
        // cout<<v[i].c<<" "<<v[i].f<<" "<<v[i].v<<" "<<v[i].type<<endl;
        for(int j=0;j<=bound;++j){
            if(v[i].type==1){
                dp[i&1][j] = max(dp[(i-1)&1][j], (j+v[i].c<=bound?dp[(i-1)&1][j+v[i].c]+v[i].v:-inf));
            }else{
                dp[i&1][j] = max(dp[(i-1)&1][j], (j>=v[i].c?dp[(i-1)&1][j-v[i].c]-v[i].v:-inf));
            }
            // cout<<dp[i&1][j]<<endl;
        }
    }
    ll ans = 0;
    
    for(int i=0;i<=bound;++i)ckmax(ans, dp[(n+m)&1][i]);
    cout<<ans<<endl;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |