Submission #1004644

#TimeUsernameProblemLanguageResultExecution timeMemory
1004644ThunnusKnapsack (NOI18_knapsack)C++17
0 / 100
1 ms344 KiB
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
#define int i64
#define vi vector<int>
#define vvi vector<vi>
#define vb vector<bool>
#define pii pair<int, int>
#define fi first
#define se second
#define sz(x) (int)(x).size()

signed main() {
	ios_base::sync_with_stdio(false); cin.tie(0);
	int s, n, w, v, k, at = 1, copies, type_at, profit, cur_used;
	cin >> s >> n;
	map<int, vector<pii>> by_w;
	for(int i = 0; i < n; i++){
		cin >> w >> v >> k;
		by_w[w].emplace_back(v, k);
	}

	vvi best(sz(by_w) + 1, vi(n + 1, INT32_MIN)); // best[i][j] -> using j weight and the first i weight types
	best[0][0] = 0;
	for(auto &[weight, items] : by_w){
		sort(items.begin(), items.end(), greater<pii>());
		for(int i = 0; i <= n; i++){
			best[at][i] = best[at - 1][i];
			while((copies + 1) * weight <= i && 	type_at < sz(items)){
				copies++;
				profit += items[type_at].fi;
				if(best[at - 1][i - copies * weight] != INT32_MIN)
					best[at][i] = max(best[at][i], best[at - 1][i - copies * weight] + profit);
				cur_used++;
				if(cur_used == items[type_at].se){
					cur_used = 0;
					type_at++;
				}
			}
		}
		at++;
	}
	cout << *max_element(best.back().begin(), best.back().end());
	return 0;
}

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:34:13: warning: 'cur_used' may be used uninitialized in this function [-Wmaybe-uninitialized]
   34 |     cur_used++;
      |     ~~~~~~~~^~
knapsack.cpp:31:12: warning: 'profit' may be used uninitialized in this function [-Wmaybe-uninitialized]
   31 |     profit += items[type_at].fi;
      |            ^
knapsack.cpp:37:13: warning: 'type_at' may be used uninitialized in this function [-Wmaybe-uninitialized]
   37 |      type_at++;
      |      ~~~~~~~^~
knapsack.cpp:29:18: warning: 'copies' may be used uninitialized in this function [-Wmaybe-uninitialized]
   29 |    while((copies + 1) * weight <= i &&  type_at < sz(items)){
      |          ~~~~~~~~^~~~
#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...