제출 #1332540

#제출 시각아이디문제언어결과실행 시간메모리
1332540lgm_jeetKnapsack (NOI18_knapsack)C++20
73 / 100
397 ms31852 KiB
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7 ;

#define int long long // safety
int S , N ;
int dp[2002][2002] ;
int w[2002] ;
int v[2002] ;
int cnt[2002] ;


int rec(int i,int x ){
    
    if(i==N) return 0 ;

    if(dp[i][x] != -1){
        return dp[i][x] ;
    }
         int ans = 0 ;
    for(int k=0 ; k <= cnt[i] ; k++){
        if(k*w[i]<=x){
            ans = max(ans, rec(i+1 , x- k*w[i]) + k*v[i]) ;
        }else{
            break ;
        }
    }
   return dp[i][x] = ans ;
   
}

void solve(){
      cin>>S>>N;
      memset(dp,-1,sizeof(dp))  ;
      for(int i=0 ; i<N ; i++){
        cin>>v[i]>>w[i]>>cnt[i] ;
      }
      
      int d = rec(0,S) ;
      cout<<d<<endl ;

}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t=1 ;
   // cin >> t;
    while(t--) solve();
    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...