제출 #780352

#제출 시각아이디문제언어결과실행 시간메모리
780352andecaandeciKnapsack (NOI18_knapsack)C++17
29 / 100
5 ms1876 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define fi first
#define se second
#define pb push_back
#define TC int t; cin>>t; while(t--)
#define all(x) (x).begin(),(x).end()
//*AC BERSAMA ALLAH  FORTIS FORTUNA ADIUVAT


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

    int energi,tipe;
    cin>>energi>>tipe;
    vector<pair<pair<ll,ll>,ll > > v(tipe+1);
    ll dp[tipe+1][energi+1]; memset(dp,0,sizeof(dp));

    for(int i=1;i<=tipe;i++){
        ll l,e,k;
        cin>>l>>e>>k;
        v[i]=make_pair(make_pair(l,e),k); // luas, energi, kuantiti
    }

    for(int i=1;i<=tipe;i++){
        for(int j=1;j<=energi;j++){
            dp[i][j]=dp[i-1][j];
            ll kuant=v[i].se, en=v[i].fi.se;
            for(int k=1;k<=kuant;k++){
                if(j>=en*k){
                    if(dp[i-1][j-k*en]+k*v[i].fi.fi>=dp[i][j]){
                        dp[i][j]=dp[i-1][j-k*en]+k*v[i].fi.fi;
                    }
                    else break;
                }
                else break;
            }
        }
    }
    cout<<dp[tipe][energi]<<'\n';


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