Submission #1235487

#TimeUsernameProblemLanguageResultExecution timeMemory
1235487rcllCloud Computing (CEOI18_clo)C++20
100 / 100
523 ms1456 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N=1e5+2;
struct Com {
	ll c,f,v,req;
};
Com C;

int main() {
	ll t,n,m,ans,s,sum,x,y,r,p,i,j;
	cin >> n;
	vector < Com > v;
	
	for (i=1; i <= n; i ++) {
		cin >> C.c >> C.f >> C.v;
		C.req=0;
		v.push_back(C);
	}
	cin >> m;
	for (i=1; i <= m; i ++) {
		cin >> C.c >> C.f >> C.v;
		C.req=1;
		v.push_back(C);
	}
	sort(v.begin(),v.end(),[](Com& A,Com& B){
		if ( A.f == B.f) return A.req < B.req;
		return A.f > B.f;
	});
	vector < ll > dp(N+2,-1e16);
	dp[0]=0;
	ans=0;
	for (Com& A : v) {
		if ( A.req == 1) {
			for (i=0; i+A.c <= N; i ++) {
				dp[i]=max(dp[i],dp[i+A.c]+A.v);				
			}
		}
		else {
			for (i=N; i >= A.c; i --) {
				dp[i]=max(dp[i],dp[i-A.c]-A.v);
			}
		}
		for (i=0; i <= N; i ++) ans=max(ans,dp[i]);
	}
	cout << ans;
}
#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...