Submission #640336

#TimeUsernameProblemLanguageResultExecution timeMemory
640336htphong0909Knapsack (NOI18_knapsack)C++17
73 / 100
1088 ms2676 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast", "O3")

using namespace std;

///Loops
#define fow(i,start,end,step) for(ll i = (start); i <= (end); i += (step))
#define rep(i,start,end,step) for(ll i = (start); i < (end); i+= (step))
#define dow(i,start,end,step) for(ll i = (start); i >= (end); i-= (step))
///Others
#define FASTIO ios::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define reset(a, val) memset(a, val, sizeof(a))
#define SQR(a) (1LL)*(a)*(a) // a * a
#define BIT(a) (1 << (a)) // 2^a
#define sz(a) int(a.size())
#define all(a) a.begin(), a.end()
#define MAX 500500
///Read File
void setIO(const string &NAME = ""){
    if ((int) NAME.length() && fopen((NAME + ".inp").c_str(), "r")) {
        freopen((NAME + ".inp").c_str(), "r", stdin),
        freopen((NAME + ".out").c_str(), "w", stdout);
    }
}
///Sort & Remove Duplicate
void ReDup(vector<int> &v){
    sort(all(v)); v.erase(unique(all(v)), v.end());
}
///Minimize a = min(a, b)
template<class X, class Y> bool ckmin(X &x, const Y &y) {
        X eps = 1e-9;
        if (x > y + eps) {
            x = y;
            return true;
        } else return false;
    }
///Maximize a = max(a, b)
template<class X, class Y> bool ckmax(X &x, const Y &y) {
        X eps = 1e-9;
        if (x + eps < y) {
            x = y;
            return true;
        } else return false;
    }
using ll = long long;
using lli = long long int;
using ulli = unsigned long long int;
using db = double;
using fl = float;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using mii = map<int, int>;
using msi = map<string, int>;

const int MOD = (int) 1e9 + 7; //998244353;
const int inf = (int) 1e9 + 7;
const ll INF = 1e18;
/** END OF TEMPLATE **/
ll times;

ll w[10000001],v[10000001], a[10000001], l[10000100];
void solve(){
    ll n, m;
    ll mins = inf;
    cin >> m >> n;

    fow(i, 1, n, 1) cin >> v[i] >> w[i] >> a[i];

    fow(i, 1, m, 1) l[i] = 0;

    fow(i, 1, n, 1){
        dow(j, m, w[i], 1){
            mins = min(a[i], j / w[i]);
            fow(k, 0, mins, 1){
                ckmax(l[j],l[j - w[i]*k] + v[i]*k);
            }
        }
    }
    cout << l[m];
}

signed main(){
    FASTIO;
    //cin >> times;
    times = 1;
    while(times > 0){
        solve();
        times--;
    }
}

Compilation message (stderr)

knapsack.cpp: In function 'void setIO(const string&)':
knapsack.cpp:25:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |         freopen((NAME + ".inp").c_str(), "r", stdin),
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
knapsack.cpp:26:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |         freopen((NAME + ".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...