Submission #1269393

#TimeUsernameProblemLanguageResultExecution timeMemory
1269393amir8805Knapsack (NOI18_knapsack)C++20
37 / 100
1052 ms66132 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
    long long int s , n;
    cin >> s >> n;
    vector <pair<long long int,long long int>> ka;
    for (long long int i = 0 ; i < n ; i++){
        long long int a , b , c;
        cin >> a >> b >> c;
        for (long long int j = 0 ; j < c ; j++) {
            ka.push_back(make_pair(b , a));
        }
    }
    vector <long long int> dp(s+1 , 0);
    vector <long long int> dp3(s+1 , 0);
    for (auto it : ka){
        long long int w = it.first;
        long long int v = it.second;
        vector<long long int> dp2 = dp;
        for (long long int j = 0 ; j+w <= s ; j++){
            dp2[j+w] = max(dp2[j+w] , dp[j]+v);
        }
        for (long long int i = 0 ; i < dp.size() ;  i++){
            dp3[i] = dp[i];
        }
        for (long long int i = 0 ; i < dp.size() ;  i++){
            dp[i] = dp2[i];
        }
        for (long long int i = 0 ; i < dp.size() ;  i++){
            dp2[i] = dp3[i];
        }
        dp3.clear();
    }
    long long int ans = 0;
    for (long long int i = 0 ; i <= s ; i++){
        ans = max(ans , dp[i]);
    }
    cout << ans;
    return 0;
}
#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...