Submission #997424

#TimeUsernameProblemLanguageResultExecution timeMemory
997424mostafa133Cloud Computing (CEOI18_clo)C++14
100 / 100
327 ms1372 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
typedef long long ll;
typedef long double ld;
using namespace std;
using namespace __gnu_pbds;
using ordered_set = tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update>;
#define all(x) x.begin(), x.end()
#define pll pair<ll, ll>
#define fast ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
const ll mod = 998244353;
ld fpow(ll a, ll b, ll m = -1)
{
	if (m != -1)
		a %= m;
	ll res = 1;
	while (b > 0)
	{
		if (b % 2 == 1)
		{
			if (m != -1)
				res = res * a % m;
			else
			{
				res *= a;
			}
		}
		a = a * a;
		if (m != -1)
		{
			a %= m;
		}
		b /= 2;
	}
	return res;
}

vector<vector<char>> v;
vector<vector<ll>> a;
ll n, m;
void dfs(ll i, ll j, ll k)
{
	if (i < 0 || i >= n || j < 0 || j >= m || a[i][j] || v[i][j] == '.')
	{
		return;
	}
	a[i][j] = k;
	dfs(i + 1, j, k), dfs(i - 1, j, k), dfs(i, j + 1, k), dfs(i, j - 1, k);
}
int main()
{
	fast;
	// freopen("pails.in", "r", stdin);
	// freopen("pails.out", "w", stdout);
	ll t = 1;
	// cin >> t;
	while (t--)
	{
		ll n, m;
		cin >> n;
		vector<array<ll, 3>> a(n);
		ll s1 = 0, s2 = 0;
		for (int i = 0; i < n; i++)
		{
			cin >> a[i][1] >> a[i][0] >> a[i][2];
			s1 += a[i][1];
		}
		sort(all(a), greater<array<ll, 3>>());
		cin >> m;
		vector<array<ll, 3>> b(m);
		for (int i = 0; i < m; i++)
		{
			cin >> b[i][1] >> b[i][0] >> b[i][2];
			s2 += b[i][1];
		}
		sort(all(b), greater<>());
		vector<ll> dp(max(s2, s1) + 1, LLONG_MIN/4);
		ll in = 0;
		dp[0]=0;
		for (int i = 0; i < m; i++)
		{
			while (in < n && b[i][0] <= a[in][0])
			{
				for (int j = dp.size() - 1; j >= a[in][1]; j--)
				{
					dp[j] = max(dp[j], dp[j - a[in][1]] - a[in][2]);
				}
				in++;
			}
			for (int j = 0; j < dp.size()-b[i][1]; j++)
			{
				dp[j] = max(dp[j], dp[j + b[i][1]] + b[i][2]);
			}
		}
		// for(int i = 0; i < dp.size())
		cout << *max_element(all(dp)) << '\n';
	}
	return 0;
}

Compilation message (stderr)

clo.cpp: In function 'int main()':
clo.cpp:91:22: warning: comparison of integer expressions of different signedness: 'int' and 'long long unsigned int' [-Wsign-compare]
   91 |    for (int j = 0; j < dp.size()-b[i][1]; j++)
#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...