Submission #1298643

#TimeUsernameProblemLanguageResultExecution timeMemory
1298643uchihahahaheCloud Computing (CEOI18_clo)C++20
100 / 100
528 ms3044 KiB
#include <bits/stdc++.h>
#define ll long long
#define db long double
#define pll pair<ll,ll>
#define foru(i,a,b) for(ll i=(a);i<=(b);i++)
#define ford(i,a,b) for(ll i=(a);i>=(b);i--)
#define ALL(a) (a).begin(),(a).end()
#define ROUND(i) fixed<<setprecision(i)
#define fi first
#define se second
using namespace std;
ll n,m;
struct abc{
    ll c,f,v;
    bool operator<(abc&o){
        if(f!=o.f)return f>o.f;
        return v<o.v;
    }
}t[4003];
ll MX=0;
ll dp[4003*55+10];
ll pd[4003*55+10];
signed main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
 
    cin>>n;
    ll s1=0,s2=0;
    foru(i,1,n){
        ll c,f,v;cin>>c>>f>>v;
        s1+=c;
        v=-v;
        t[i]={c,f,v};
    }
    cin>>m;
    foru(i,1,m){
        ll c,f,v;cin>>c>>f>>v;
        s2+=c;
        c=-c;
        t[i+n]={c,f,v};
    }
    MX=max(s1,s2);
    sort(t+1,t+n+m+1);
    memset(dp,-0x3f,sizeof(dp));
    dp[0]=0;
    foru(i,1,n+m){
        foru(j,0,MX)pd[j]=dp[j];
        foru(j,0,MX){
            if(0<=j-t[i].c&&j-t[i].c<=MX&&pd[j-t[i].c]>-1e17)
                dp[j]=max(dp[j],pd[j-t[i].c]+t[i].v);
        }
    }
    ll res=0;
    foru(i,0,MX)res=max(res,dp[i]);
    cout<<res;
    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...