Submission #860269

#TimeUsernameProblemLanguageResultExecution timeMemory
860269Darren_YangKnapsack (NOI18_knapsack)C++14
49 / 100
1051 ms464 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define ld long double
#define str string

// pairs
#define pi pair<int, int>
#define pl pair<ll, ll>
#define pd pair<ld, ld>
#define mp make_pair
#define f first
#define s second

// vectors
#define sz(x) (int)(x).size()
#define bg(x) begin(x)
#define all(x) bg(x), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sor(x) sort(all(x))
#define rs resize
#define is insert
#define pb push_back
#define eb emplace_back
#define fr front()
#define bk back()

#define lb lower_bound
#define ub upper_bound

// loops
#define FOR(n) for(int i=0; i<(n); ++i)
#define FOR1(a, b) for(int i=(a); i<(b); ++i)
#define each(x, a) for(auto& x : a)

const int S=2e3;
ll s, n, v, w, k, dp[S+1];

void solve() {
    cin >> s >> n;
    if(n==1) {
        cin >> v >> w >> k;
        cout << v*min(s/w, k) << "\n";
    } else {
        FOR(n) {
            cin >> v >> w >> k;
            for(int j=0; j<k; ++j)
                for(int l=s; l-w>=0; --l)
                    dp[l]=max(dp[l-w]+v, dp[l]);
        }
        cout << dp[s] << "\n";
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    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...