Submission #782194

#TimeUsernameProblemLanguageResultExecution timeMemory
782194andecaandeciKnapsack (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; // if(k>2000) k=2000; // if(e*k>energi) k=energi/e; // if(e>energi) continue; 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++; } } // cout<<items.size()<<'\n'; 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+1;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[i][j]<<' '; } // cout<<'\n'; } cout<<dp[isz][energi+1]<<'\n'; // for(int j=1;j<=energi;j++){ // dp[i][j]=dp[i-1][j]; // if(!v[i].empty()){ // if(v[i].back().se<=0) v[i].pop_back(); // if(v[i].empty()) continue; // if(j>i && dp[i-1][j-i]+v[i].back().fi>dp[i][j]){ // dp[i][j]=dp[i-1][j-i]+v[i].back().fi; // v[i].back().se--; // } // } // } // for(int i=1;i<=energi;i++){ // for(int j=1;j<=energi;j++){ // cout<<dp[i][j]<<' '; // } // cout<<'\n'; // } // cout<<dp[energi][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...