Submission #898789

#TimeUsernameProblemLanguageResultExecution timeMemory
898789AmaarsaaKnapsack (NOI18_knapsack)C++14
100 / 100
59 ms5464 KiB
#include<bits/stdc++.h> using namespace std; using ll = int; const int N = 1e5 + 2; ll weight[N], CanAdd[N], price[N], Left[N]; vector < pair < ll, ll > > W[2002]; ll dp[N]; int main() { // freopen("moocast.in", "r", stdin); // freopen("moocast.out", "w", stdout); ios::sync_with_stdio(false); cin.tie(NULL); ll i, ans, j, r, last, now, n, k, p; cin >> k >> n; for (i = 1; i <= n; i ++) { cin >> price[i] >> weight[i] >> Left[i]; if ( weight[i] <= k && Left[i] > 0) W[weight[i]].push_back({price[i], Left[i]}); } vector < pair < ll, ll > > v; for (i = 1; i <= k; i ++) { sort(W[i].begin(), W[i].end(), greater<pair < ll, ll > >()); r = k/i; p = 0; while ( r > 0 && p < W[i].size()) { v.push_back({i, W[i][p].first}); if ( W[i][p].second == 0) p ++; else { W[i][p].second --; if ( W[i][p].second == 0) p ++; } r --; } } ans = 0; memset(dp, -0x3f, sizeof dp); dp[0] = 0; for (i = 0; i < v.size(); i ++) { for (j = k; j >= v[i].first; j --) { dp[j] = max(dp[j], dp[j - v[i].first] + v[i].second); ans = max(ans, dp[j]); } } cout << ans << endl; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:28:22: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   while ( r > 0 && p < W[i].size()) {
      |                    ~~^~~~~~~~~~~~~
knapsack.cpp:41:16: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |  for (i = 0; i < v.size(); i ++) {
      |              ~~^~~~~~~~~~
knapsack.cpp:14:19: warning: unused variable 'last' [-Wunused-variable]
   14 |  ll i, ans, j, r, last, now, n, k, p;
      |                   ^~~~
knapsack.cpp:14:25: warning: unused variable 'now' [-Wunused-variable]
   14 |  ll i, ans, j, r, last, now, n, k, p;
      |                         ^~~
#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...