제출 #951800

#제출 시각아이디문제언어결과실행 시간메모리
951800TrendBattlesKnapsack (NOI18_knapsack)C++14
100 / 100
101 ms5864 KiB
#include <bits/stdc++.h> using namespace std; using lli = int64_t; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int W, N; cin >> W >> N; vector <vector <int>> store(W + 1); for (int i = 1; i <= N; ++i) { int value, weight, cnt; cin >> value >> weight >> cnt; lli k = 1; while (cnt >= k) { if (weight * k <= W) { store[weight * k].push_back(value * k); } cnt -= k; k <<= 1; } if (cnt and (lli) weight * cnt <= W) { store[weight * cnt].push_back(value * cnt); } } vector <lli> dp(W + 1); for (int i = 1; i <= W; ++i) { sort(store[i].begin(), store[i].end(), greater <int> ()); if (store[i].size() > W / i) { store[i].erase(store[i].begin() + W / i, store[i].end()); } for (int v : store[i]) { for (int cur_w = W; cur_w >= i; --cur_w) { dp[cur_w] = max(dp[cur_w], dp[cur_w - i] + v); } } } cout << dp[W]; return 0; }

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

knapsack.cpp: In function 'int main()':
knapsack.cpp:33:26: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   33 |      if (store[i].size() > W / 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...