이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
int main()
{
int S, N, sz = 0;
cin >> S >> N;
vector<int>values, weights;
int V, W, K;
if(N == 1){
cin >> V >> W >> K;
int num = S / W;
cout << 1LL * min(num, K) * V;
return 0;
}
for(int i = 0;i < N;++i){
cin >> V >> W >> K;
for(int j = 0;j < K;++j){
values.push_back(V);
weights.push_back(W);
}
sz += K;
}
vector<long long>dp(S + 1, -1e9);
long long mx = 0;
dp[0] = 0;
for(int j = 0;j < sz;++j){
for(int i = S;i >= 0;--i){
if(i - weights[j] >= 0)dp[i] = max(dp[i - weights[j]] + 1LL * values[j], dp[i]);
// cout << j << ", " << i << ": " << dp[i] << '\n';
mx = max(mx, dp[i]);
}
}
cout << mx;
}
# | 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... |