Submission #906411

#TimeUsernameProblemLanguageResultExecution timeMemory
906411NonozeCloud Computing (CEOI18_clo)C++17
100 / 100
670 ms2384 KiB
#include <bits/stdc++.h>

#define int long long
#define sz(x) (int)(x.size())

using namespace std;

struct computer {
	int c, f, v;
	bool operator <(const computer &a) {
		if (f>a.f) return true;
		else if (f==a.f) return v<a.v;
		return false;
	}
};

int n, m;
vector<computer> a;

void solve() {
	cin >> n;
	a.clear();
	a.resize(n);
	for (auto &u: a) {
		cin >> u.c >> u.f >> u.v;
		u.v*=-1;
	}
	cin >> m;
	for (int i=0; i<m; i++) {
		int c, f, v; cin >> c >> f >> v;
		c*=-1;
		a.push_back({c, f, v});
	}
	sort(a.begin(), a.end());
	vector<int> dp(50*n+10, -1e15);
	vector<int> lst(50*n+10, -1e15);
	lst[0]=0;
	dp[0]=0;
	for (int tt=0; tt<n+m; tt++) {
		for (int i=0; i<=50*n; i++) {
			if (i+a[tt].c>50*n || i+a[tt].c<0) continue;
			dp[i+a[tt].c]=max(lst[i+a[tt].c], lst[i]+a[tt].v);
		}
		lst=dp;
	}
	cout << *max_element(dp.begin(), dp.end()) << endl;
	return;
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	solve();
	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...