| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1357191 | kai | Knapsack (NOI18_knapsack) | C++20 | 28 ms | 3140 KiB |
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define el '\n'
#define all(x) begin(x), end(x)
#define sz(s) (int)(s.size())
inline void setIO(string s) {
if(fopen((s + ".in").c_str(), "r")){
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
}
const int MOD = 1e9+7; //998244353;
const int N = 1e6 + 36;
const int MAX_S = 2000 + 36;
vector<pair<int, int>> vt[MAX_S];
int f[N];
int n, s, w, v, k;
void Solve(){
cin>> s>> n;
for(int i=0; i<n; i++){
cin>> v>> w>> k;
vt[w].push_back({v, k});
}
vector<pair<int, int>> cal;
for(int w = 1; w<=s; w++){
sort(all(vt[w]), greater<pair<int, int>>());
int need = s/w;
for(auto [v, k]: vt[w]){
int take = min(need, k);
for(int t=0; t<take; t++){
cal.push_back({w, v});
}
need -= take;
if(need == 0) break;
}
}
for(auto [ww, vv]: cal){
for(int j = s; j>=ww; j--){
f[j] = max(f[j], f[j-ww] + vv);
}
}
cout<< *max_element(f + 1, f+s+1)<<el;
}
signed main (){
setIO("Rem");
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int T(1);
// cin >> T;
while(T--) Solve();
return 0;
}컴파일 시 표준 에러 (stderr) 메시지
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
