Submission #1069025

#TimeUsernameProblemLanguageResultExecution timeMemory
1069025vjudge1Knapsack (NOI18_knapsack)C++17
37 / 100
1099 ms460 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define f first
#define s second
typedef pair<int,int> pii;
typedef tuple<int, int, int> iii;
int mod = (int)1e9 + 7; 
int  lt(int l, int r, function<bool(int x)> f)
{
    l--;
    while(l < r)
    {
        int m = l + (r - l + 1) / 2;
        if(f(m)) r = m;
        else l = m + 1;
    }
    return l;
}
int pw(int a, int b)
{
    int ans = 1;
    while(b > 0)
    {
        if(b & 1) ans *= a;
        ans %= mod;
        a *= a;
        a %= mod;
        b >>= 1;
    }
    return ans;
}
int inverse(int x)
{
    return pw(x, mod - 2); 
}
void solve()
{
    int s, n; cin >> s >> n;
    int dp[s + 1] = {0};
    int mx = 0;
    for(int x = 0; x < n; x++)
    {
        int v, w, k; cin >> v >> w >> k;
        for(int y = 1; y <= k; y++)
        {
            for(int z = s; z >= 0; z--)
            {
                if(z - w < 0) continue;
                dp[z] = max(dp[z], dp[z - w] + v);
                mx = max(mx, dp[z]);
            }
            //cout << mx << " ";
        }
    }
    //cout << "\n";
    cout << mx;
}
signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
	//freopen("wormsort.in", "r", stdin);
	//freopen("wormsort.out", "w", stdout);
    int t = 1;
    //cin >> t;
    while(t--)
    {
        solve();
    }
    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...