Submission #631255

#TimeUsernameProblemLanguageResultExecution timeMemory
631255bshenKnapsack (NOI18_knapsack)C++17
100 / 100
244 ms4720 KiB
#include <iostream>
#include <vector>
 
using namespace std;
 
long long s, n, v[100001], w[100001], k[100001];
long long dp[2001];
bool better, improved;
long long old;
 
int main() {
    cin >> s >> n;
    for (int i=0; i<n; i++) {
        cin >> v[i] >> w[i] >> k[i];
        k[i] = min(k[i], s/w[i]);
    }
    for (int i=0; i<n; i++) {
        better = true;
        for (int j=0; j<k[i]; j++) if (better) {
            better = false;
            for (int we=s; we>=0; we--) {
                if (we-w[i] >=0) {
                  old = dp[we];
                  dp[we] = max(dp[we], dp[we-w[i]] + v[i]);
                  if (dp[we] > old) better = true;
                }
            }
        }
    }
    cout << dp[s] << endl;
}
#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...