Submission #782207

#TimeUsernameProblemLanguageResultExecution timeMemory
782207andecaandeciKnapsack (NOI18_knapsack)C++17
0 / 100
1 ms1492 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

bool comp(pair<ll,ll> a, pair<ll,ll> b){
    return a.fi>b.fi;
}

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 > > a;
    vector<pair<ll,ll> > v[2005], items; // energi, luas

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

    for(int i=1;i<=energi;i++){
        sort(all(v[i]),comp);
        int idx=0, sz=v[i].size();
        ll tmpen=energi;
        while(idx<sz){
            for(int j=0;j<v[i][idx].se;j++){
                if(tmpen>i){
                    tmpen-=i;
                    items.pb(make_pair(i,v[i][idx].fi));
                }
                else break;
            }
            idx++;
        }
    }

    int isz=items.size();
    ll dp[isz+1][energi+1]; memset(dp,0,sizeof(dp));

    for(int i=1;i<=isz;i++){
        for(int j=1;j<=energi;j++){
            dp[i][j]=dp[i-1][j];
            if(j>=items[i-1].fi && dp[i-1][j-items[i-1].fi]+items[i-1].se>dp[i][j]){
                dp[i][j] = dp[i-1][j-items[i-1].fi]+items[i-1].se;
            }
        }
    }

    cout<<dp[isz][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...