Submission #826608

# Submission time Handle Problem Language Result Execution time Memory
826608 2023-08-15T17:49:23 Z georgievskiy Cloud Computing (CEOI18_clo) C++17
100 / 100
1620 ms 3616 KB
#include <bits/stdc++.h>
using namespace std;

#define max_(a, b) a = max((a), (b))
#define ll long long

const int N = 2004, K = 102;
ll dp[2][N][K];

int main() {
	int n;
	cin >> n;
	struct st {
		int c, f, v;
		bool operator<(st ot) {
			return f < ot.f;
		}
	};
	vector<st> a(n);
	for (int i = 0; i < n; i++)
		cin >> a[i].c >> a[i].f >> a[i].v;
	int m;
	cin >> m;
	vector<st> q(m);
	for (int i = 0; i < m; i++)
		cin >> q[i].c >> q[i].f >> q[i].v;
	sort(a.rbegin(), a.rend()), sort(q.rbegin(), q.rend());
	ll int inf = 1e12;
	for (int i = 0; i < 2; i++)
		for (int j = 0; j <= m; j++)
			for (int k = 0; k < K; k++) dp[i][j][k] = -inf;

	dp[0][0][0] = 0;

	ll ans = 0;
	for (int i = 0; i <= n; i++) {
		int i2 = i & 1;
		for (int j = 0; j <= m; j++) {
			for (int k = 0; k < K; k++) {
				auto& v = dp[i2][j][k];
				auto comp = i ? a[i - 1] : st{0, 0, 0}, cust = j ? q[j - 1] : st{0, 0, 0};

				if (i)
					max_(v, dp[1 - i2][j][k]);
				if (j)
					max_(v, dp[i2][j - 1][k]);
				if (i && k - comp.c >= 0)
					max_(v, dp[1 - i2][j][k - comp.c] - comp.v);
				if (j && k + cust.c < K && comp.f >= cust.f)
					max_(v, dp[i2][j - 1][k + cust.c] + cust.v);
				// cout << i << " " << j << " " << k << " " << v << "\n";
				max_(ans, v);
				if (v <= -(inf / 10))
					v = -inf;
			}
			// max_(ans, dp[i2][j][0]);
		}
	}
	cout << ans << "\n";

	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 2 ms 436 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 18 ms 3284 KB Output is correct
6 Correct 16 ms 3412 KB Output is correct
7 Correct 15 ms 3540 KB Output is correct
8 Correct 15 ms 3540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 6 ms 360 KB Output is correct
6 Correct 6 ms 340 KB Output is correct
7 Correct 14 ms 408 KB Output is correct
8 Correct 15 ms 340 KB Output is correct
9 Correct 16 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 4 ms 468 KB Output is correct
4 Correct 4 ms 468 KB Output is correct
5 Correct 15 ms 552 KB Output is correct
6 Correct 15 ms 468 KB Output is correct
7 Correct 30 ms 724 KB Output is correct
8 Correct 27 ms 732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 308 KB Output is correct
3 Correct 6 ms 340 KB Output is correct
4 Correct 13 ms 3156 KB Output is correct
5 Correct 1514 ms 3216 KB Output is correct
6 Correct 1620 ms 3568 KB Output is correct
7 Correct 1595 ms 3580 KB Output is correct
8 Correct 1526 ms 3544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 3 ms 432 KB Output is correct
3 Correct 55 ms 596 KB Output is correct
4 Correct 455 ms 2260 KB Output is correct
5 Correct 1526 ms 3580 KB Output is correct
6 Correct 1615 ms 3556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 2 ms 436 KB Output is correct
4 Correct 1 ms 596 KB Output is correct
5 Correct 18 ms 3284 KB Output is correct
6 Correct 16 ms 3412 KB Output is correct
7 Correct 15 ms 3540 KB Output is correct
8 Correct 15 ms 3540 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 6 ms 360 KB Output is correct
14 Correct 6 ms 340 KB Output is correct
15 Correct 14 ms 408 KB Output is correct
16 Correct 15 ms 340 KB Output is correct
17 Correct 16 ms 376 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 4 ms 468 KB Output is correct
21 Correct 4 ms 468 KB Output is correct
22 Correct 15 ms 552 KB Output is correct
23 Correct 15 ms 468 KB Output is correct
24 Correct 30 ms 724 KB Output is correct
25 Correct 27 ms 732 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 308 KB Output is correct
28 Correct 6 ms 340 KB Output is correct
29 Correct 13 ms 3156 KB Output is correct
30 Correct 1514 ms 3216 KB Output is correct
31 Correct 1620 ms 3568 KB Output is correct
32 Correct 1595 ms 3580 KB Output is correct
33 Correct 1526 ms 3544 KB Output is correct
34 Correct 0 ms 212 KB Output is correct
35 Correct 3 ms 432 KB Output is correct
36 Correct 55 ms 596 KB Output is correct
37 Correct 455 ms 2260 KB Output is correct
38 Correct 1526 ms 3580 KB Output is correct
39 Correct 1615 ms 3556 KB Output is correct
40 Correct 96 ms 1152 KB Output is correct
41 Correct 330 ms 2212 KB Output is correct
42 Correct 955 ms 2748 KB Output is correct
43 Correct 1573 ms 3584 KB Output is correct
44 Correct 1582 ms 3592 KB Output is correct
45 Correct 1482 ms 3616 KB Output is correct
46 Correct 420 ms 1940 KB Output is correct
47 Correct 951 ms 2772 KB Output is correct
48 Correct 945 ms 2664 KB Output is correct