Submission #1060102

#TimeUsernameProblemLanguageResultExecution timeMemory
1060102MalixCloud Computing (CEOI18_clo)C++14
100 / 100
599 ms2140 KiB
#include <bits/stdc++.h>
using namespace std;
 
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef pair<int,int> pi;
typedef vector<pi> pii;
typedef tuple<int,int,int> tii;
typedef vector<ll> li;
typedef vector<li> lii;
 
#define REP(i,a,b) for(int i=a;i<b;i++)
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define LSOne(s) ((s)&(-s))
 
ll INF=1e18+10;
int inf=1e9+10;
ll M=1e9+7;

int n,m;
int mx=1e5+10;

int main() {   
    cin>>n;
    vector<tii> arr;
    REP(i,0,n){
        int x,y,z;cin>>x>>y>>z;
        arr.PB({y,x,-z});
    }
    cin>>m;
    REP(i,0,m){
        int x,y,z;cin>>x>>y>>z;
        arr.PB({y,-x,z});
    }
    sort(arr.begin(),arr.end());
    reverse(arr.begin(),arr.end());
    vector<ll> dp(mx,-INF);
    dp[0]=0;
    REP(i,0,n+m){
        vector<ll> t(mx);
        REP(j,0,mx){
            t[j]=dp[j];
            if(j-get<1>(arr[i])<0||j-get<1>(arr[i])>=mx)continue;
            if(dp[j-get<1>(arr[i])]==-INF)continue;
            t[j]=max(t[j],dp[j-get<1>(arr[i])]+get<2>(arr[i]));
        }
        dp=t;
    }
    cout<<*max_element(dp.begin(),dp.end());
}
#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...