Submission #1318670

#TimeUsernameProblemLanguageResultExecution timeMemory
1318670bnijaamaaKnapsack (NOI18_knapsack)C++20
49 / 100
1093 ms416 KiB
#include <bits/stdc++.h>

#define int long long
#define nn '\n'
using namespace std;
signed main() {
    int s, n;
    cin >> s >> n;
    vector < int > v(n + 1), w(n + 1), k(n + 1);
    vector < int > dp(s + 1, 0), tenge(n + 1, 0);
    dp[0] = 0;
    for (int i = 1; i <= n; i++)
    {
        cin >> v[i] >> w[i] >> k[i];
    }
    if (n == 1)
    {
       int l = 1 , r = k[1];
       int ans = 0;
       while(l <= r)
       {
           int mid = (l + r) / 2;
           if(mid * w[1] <= s)
           {
               ans = mid;
               l = mid + 1;
           }
           else
           {
               r = mid - 1;
           }
       }
       cout << ans * v[1];
    }
    else
    {
        for (int i = 1; i <= n; i++)
        {
            for (int cnt = 1; cnt <= k[i]; cnt++) {
                for (int j = s; j >= w[i]; j--)
                {
                    dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
                }
            }
        }
        cout << dp[s];
    }
}
#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...