제출 #1084004

#제출 시각아이디문제언어결과실행 시간메모리
1084004mostafa133Knapsack (NOI18_knapsack)C++14
100 / 100
93 ms36328 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 vec vector
#define fast ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
const ll mod = 1e9 + 7;
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;
}
int main()
{
	// fast;
	// freopen("pails.in", "r", stdin);
	// freopen("pails.out", "w", stdout);
	ll t = 1;
	// cin >> t;
	while (t--)
	{
		ll n, s;
		cin >> s >> n;
		vec<vec<array<ll, 2>>> v(s + 1);
		for (int i = 0; i < n; i++)
		{
			ll a, b, c;
			cin >> a >> b >> c;
			v[b].push_back({a, c});
		}
		for (int i = 0; i <= s; i++)
		{
			sort(all(v[i]), greater<array<ll, 2>>());
		}
		vec<vec<ll>> dp(s + 1, vec<ll>(s + 1));
		for (int i = 0; i <= s; i++)
		{
			if(i)
			dp[i] = dp[i - 1];
			ll cur = 0, cur2 = 0;
			for (int j = 0; j < v[i].size(); j++)
			{
				for (int ii = 0; ii < v[i][j][1]; ii++)
				{
					cur += v[i][j][0], cur2 += i;
					if (cur2 > s)
					{
						break;
					}
					for (int k = cur2; k <= s; k++)
					{
						dp[i][k] = max(dp[i][k], dp[i - 1][k - cur2] + cur);
					}
				}
				if (cur2 > s)
				{
					break;
				}
			}
		}
		ll mx = 0;
		for (int i = 0; i <= s; i++)
		{
			mx = max(mx, dp[s][i]);
		}
		cout << mx << '\n';
	end:;
	}

	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

knapsack.cpp: In function 'int main()':
knapsack.cpp:67:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<long long int, 2> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |    for (int j = 0; j < v[i].size(); j++)
      |                    ~~^~~~~~~~~~~~~
knapsack.cpp:93:2: warning: label 'end' defined but not used [-Wunused-label]
   93 |  end:;
      |  ^~~
#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...