Submission #671977

#TimeUsernameProblemLanguageResultExecution timeMemory
671977stevancvKnapsack (NOI18_knapsack)C++14
100 / 100
60 ms3860 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define sp ' ' #define en '\n' #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) using namespace std; const int N = 1e6 + 2; const int mod = 1e9 + 7; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int s, n; cin >> s >> n; vector<vector<pair<int, int>>> items(s + 1); for (int i = 0; i < n; i++) { int a, b, c; cin >> a >> b >> c; items[b].push_back({a, c}); } vector<pair<int, int>> v; for (int i = 1; i <= s; i++) { sort(items[i].begin(), items[i].end()); int x = s / i; while (!items[i].empty() && x > 0) { int k = min(x, items[i].back().second); x -= k; while (k--) v.push_back({i, items[i].back().first}); items[i].pop_back(); } } vector<int> dp(s + 1, -1e9); dp[0] = 0; for (int i = 0; i < v.size(); i++) { int x = v[i].first; int y = v[i].second; for (int j = s; j >= x; j--) if (dp[j - x] != -1e9) smax(dp[j], dp[j - x] + y); } for (int i = 1; i <= s; i++) smax(dp[i], dp[i - 1]); cout << dp[s] << en; return 0; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:36:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = 0; i < v.size(); i++) {
      |                     ~~^~~~~~~~~~
#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...