Submission #634737

#TimeUsernameProblemLanguageResultExecution timeMemory
634737WaelKnapsack (NOI18_knapsack)C++14
100 / 100
127 ms42324 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define int long long #define F first #define S second #define endl '\n' int const M = 2e3 + 10 , mod = 1e9 + 7; ll n , T , Q , ans , W , val , w , c , dp[M][M] , ben[M][M]; vector<pair<ll , ll>>elem[M]; main() { ios_base::sync_with_stdio(false);cin.tie(nullptr); cin >> W >> n; for(int i = 1 ; i <= n ; ++i) { cin >> val >> w >> c; elem[w].push_back({val , c}); } for(int w = 1 ; w <= W ; ++w) { sort(elem[w].begin() , elem[w].end()); int Can = W / w , rem = 0 , val = 0; for(int cnt = 1 ; cnt <= Can ; ++cnt) { if(!rem) { if(!elem[w].size()) break; rem = elem[w].back().S; val = elem[w].back().F; elem[w].pop_back(); //cout << "val " << val << endl; } --rem; ben[w][cnt] = ben[w][cnt - 1] + val; } } for(int w = 1 ; w <= W ; ++w) { //cout << "w = " << w << endl; int Can = W / w; for(int cnt = 0 ; cnt <= Can ; ++cnt) { for(int have = 0 ; have <= W ; ++have) { dp[w][have] = max(dp[w][have] , dp[w - 1][have]); if(have - cnt * w < 0) continue; //cout << " cnt = " << cnt << " " << ben[w][cnt] << endl; dp[w][have] = max(dp[w][have] , dp[w - 1][have - w * cnt] + ben[w][cnt]); ans = max(ans , dp[w][have]); } } } cout << ans << endl; return 0; }

Compilation message (stderr)

knapsack.cpp:12:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   12 | main() {
      | ^~~~
#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...