Submission #257650

# Submission time Handle Problem Language Result Execution time Memory
257650 2020-08-04T14:00:13 Z Berted Cloud Computing (CEOI18_clo) C++14
100 / 100
1558 ms 3712 KB
#include <iostream>
#include <vector>
#include <algorithm>
#define ll long long
#define pii pair<int, int>
#define ppi pair<int, pii>
#define fst first
#define snd second
using namespace std;

const ll INF = 1e16;

int n, m;
ll dp[2][2001][101] = {};
vector<ppi> comp, pers;

int main()
{
	ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int c, f, v; cin >> c >> f >> v;
		comp.push_back({f, {c, v}});
	}
	cin >> m;
	for (int i = 0; i < m; i++)
	{
		int c, f, v; cin >> c >> f >> v;
		pers.push_back({f, {c, v}});
	}
	sort(comp.begin(), comp.end(), greater<ppi>());
	sort(pers.begin(), pers.end(), greater<ppi>());
	
	for (int i = 0; i <= m; i++)
	{
		for (int j = 0; j <= 100; j++) dp[0][i][j] = -INF;
	}
	dp[0][0][0] = 0;
	for (int i = 1; i <= n; i++)
	{
		int ci = i & 1, pi = ~i & 1;
		for (int j = 0; j <= m; j++)
		{
			for (int k = 0; k <= 100; k++)
			{
				dp[ci][j][k] = dp[pi][j][k];
				if (j) dp[ci][j][k] = max(dp[ci][j][k], dp[ci][j - 1][k]);
				if (k >= comp[i - 1].snd.fst) dp[ci][j][k] = max(dp[ci][j][k], dp[pi][j][k - comp[i - 1].snd.fst] - comp[i - 1].snd.snd);
				if (j && comp[i - 1].fst >= pers[j - 1].fst && k + pers[j - 1].snd.fst <= 100 && dp[ci][j - 1][k + pers[j - 1].snd.fst] > -INF)
				{
					dp[ci][j][k] = max(dp[ci][j][k], dp[ci][j - 1][k + pers[j - 1].snd.fst] + pers[j - 1].snd.snd);
				}
				// cout << i << " " << j << " " << k << " " << dp[ci][j][k] << "\n";
			}
		}
	}
	ll MX = 0;
	for (int k = 0; k <= 100; k++)
	{
		MX = max(MX, dp[n & 1][m][k]);
	}
	cout << MX << "\n";
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 512 KB Output is correct
4 Correct 1 ms 640 KB Output is correct
5 Correct 14 ms 3456 KB Output is correct
6 Correct 18 ms 3456 KB Output is correct
7 Correct 12 ms 3584 KB Output is correct
8 Correct 13 ms 3584 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 11 ms 520 KB Output is correct
8 Correct 15 ms 512 KB Output is correct
9 Correct 13 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 3 ms 512 KB Output is correct
4 Correct 3 ms 512 KB Output is correct
5 Correct 16 ms 640 KB Output is correct
6 Correct 17 ms 640 KB Output is correct
7 Correct 24 ms 768 KB Output is correct
8 Correct 26 ms 768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 6 ms 384 KB Output is correct
4 Correct 13 ms 3200 KB Output is correct
5 Correct 1558 ms 3328 KB Output is correct
6 Correct 1448 ms 3704 KB Output is correct
7 Correct 1463 ms 3664 KB Output is correct
8 Correct 1436 ms 3584 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 2 ms 512 KB Output is correct
3 Correct 53 ms 768 KB Output is correct
4 Correct 536 ms 2424 KB Output is correct
5 Correct 1209 ms 3684 KB Output is correct
6 Correct 1431 ms 3644 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 512 KB Output is correct
4 Correct 1 ms 640 KB Output is correct
5 Correct 14 ms 3456 KB Output is correct
6 Correct 18 ms 3456 KB Output is correct
7 Correct 12 ms 3584 KB Output is correct
8 Correct 13 ms 3584 KB Output is correct
9 Correct 1 ms 384 KB Output is correct
10 Correct 1 ms 384 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 384 KB Output is correct
13 Correct 6 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 11 ms 520 KB Output is correct
16 Correct 15 ms 512 KB Output is correct
17 Correct 13 ms 384 KB Output is correct
18 Correct 1 ms 384 KB Output is correct
19 Correct 0 ms 384 KB Output is correct
20 Correct 3 ms 512 KB Output is correct
21 Correct 3 ms 512 KB Output is correct
22 Correct 16 ms 640 KB Output is correct
23 Correct 17 ms 640 KB Output is correct
24 Correct 24 ms 768 KB Output is correct
25 Correct 26 ms 768 KB Output is correct
26 Correct 1 ms 384 KB Output is correct
27 Correct 1 ms 384 KB Output is correct
28 Correct 6 ms 384 KB Output is correct
29 Correct 13 ms 3200 KB Output is correct
30 Correct 1558 ms 3328 KB Output is correct
31 Correct 1448 ms 3704 KB Output is correct
32 Correct 1463 ms 3664 KB Output is correct
33 Correct 1436 ms 3584 KB Output is correct
34 Correct 1 ms 384 KB Output is correct
35 Correct 2 ms 512 KB Output is correct
36 Correct 53 ms 768 KB Output is correct
37 Correct 536 ms 2424 KB Output is correct
38 Correct 1209 ms 3684 KB Output is correct
39 Correct 1431 ms 3644 KB Output is correct
40 Correct 83 ms 1272 KB Output is correct
41 Correct 274 ms 2304 KB Output is correct
42 Correct 910 ms 2936 KB Output is correct
43 Correct 1198 ms 3668 KB Output is correct
44 Correct 1187 ms 3704 KB Output is correct
45 Correct 1088 ms 3712 KB Output is correct
46 Correct 416 ms 2048 KB Output is correct
47 Correct 872 ms 2936 KB Output is correct
48 Correct 869 ms 2688 KB Output is correct