Submission #885087

#TimeUsernameProblemLanguageResultExecution timeMemory
885087beabossCloud Computing (CEOI18_clo)C++14
100 / 100
744 ms2392 KiB
// Source: https://oj.uz/problem/view/CEOI18_clo
// 

#include "bits/stdc++.h"

using namespace std;

#define s second
#define f first
#define pb push_back

typedef long long ll;

typedef pair<ll, ll> pii;
typedef vector<pii> vpii;

typedef vector<ll> vi;

#define FOR(i, a, b) for (ll i = (a); i<b; i++)

vector<vi> changes; // clock rate, change in cores, change in price

const ll N = 2e3 + 1;

ll dp[2][50 * N];

const ll INF = 1e18;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	ll n;
	cin >> n;

	FOR(i, 0, n) {
		ll c, f, v;
		cin >> c >> f >> v;
		changes.pb({f, c, -v});
	}

	ll m;
	cin >> m;

	FOR(i, 0, m) {
		ll c, f, v;
		cin >> c >> f >> v;
		changes.pb({f, -c, v});
	}

	sort(changes.rbegin(), changes.rend());

	FOR(i, 0, 50*N) dp[0][i] = dp[1][i] = -INF;
	dp[0][0] = 0;
	

	ll ans = 0;

	FOR(i, 0, changes.size()) {
		ll cur = i %2;
		ll oth = (i + 1) % 2;

		FOR(j, 0, 50*N) {
			dp[oth][j] = max(dp[oth][j], dp[cur][j]);
			if (j + changes[i][1] >= 50*N || j + changes[i][1] < 0) {
				dp[cur][j] = -INF;
				continue;
			}
			// if (dp[cur][j] > 0)  cout << "  " << i << ' ' << j << endl;
			dp[oth][j + changes[i][1]] = max(dp[oth][j + changes[i][1]], dp[cur][j] + changes[i][2]);
			

			dp[cur][j] = -INF;
		}
	}

	FOR(i, 0, 50*N) {
		// if (dp[changes.size() % 2][i] > 0) cout << i << ' ' << dp[changes.size() % 2][i] << endl;
		ans = max(ans, dp[changes.size() % 2][i]);
	}

	cout << ans << endl;




}












Compilation message (stderr)

clo.cpp: In function 'int main()':
clo.cpp:19:40: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 | #define FOR(i, a, b) for (ll i = (a); i<b; i++)
......
   59 |  FOR(i, 0, changes.size()) {
      |      ~~~~~~~~~~~~~~~~~~~~               
clo.cpp:59:2: note: in expansion of macro 'FOR'
   59 |  FOR(i, 0, changes.size()) {
      |  ^~~
#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...