This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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;
bool flag=1;
while(idx<sz && flag){
for(int j=0;j<v[i][idx].se;j++){ // till habis
if(tmpen>=i){
tmpen-=i;
items.pb(make_pair(i,v[i][idx].fi)); // weight, value
}
else {
flag=0;
break;
}
}
idx++;
}
}
int isz=items.size();
// ll dp[isz+1][energi+1]; memset(dp,0,sizeof(dp));
ll dp[2][energi+1]; memset(dp,0,sizeof(dp));
for(int i=1;i<=isz;i++){
for(int j=1;j<=energi;j++){
dp[0][j]=dp[1][j];
if(j>=items[i-1].fi && dp[0][j-items[i-1].fi]+items[i-1].se>dp[1][j]){
dp[1][j] = dp[0][j-items[i-1].fi]+items[i-1].se;
}
// cout<<dp[1][j]<<' ';
}
cout<<'\n';
}
cout<<dp[1][energi]<<'\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |