이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct Produkt{
ll v,w,k;
};
int main(){
ios::sync_with_stdio(0);
cin.tie(nullptr);
cout << fixed << setprecision(8);
int s,n; cin >> s >> n;
vector<priority_queue<pair<ll,ll>>> weights(s+1);
vector<Produkt> p;
for(int i = 0;i<n;i++){
Produkt pt;
cin >> pt.v >> pt.w >> pt.k;
weights[pt.w].push({pt.v,pt.k});
}
for(int i = 1;i<=s;i++){
ll anzahl = s/i;
while(anzahl && !weights[i].empty()){
pair<ll,ll> f = weights[i].top(); weights[i].pop();
Produkt px; px.w = i; px.v = f.first;
for(int j = 0;j<min(anzahl,f.second);j++){
p.push_back(px);
}
anzahl -= min(anzahl, f.second);
}
}
vector<ll> dp(s+1,0);
ll ans = 0;
for(int i = 0;i<(int)p.size();i++){
for(int j = p[i].w;j<=s;j++){
dp[j-p[i].w] = max(dp[j-p[i].w],dp[j] + p[i].v);
ans = max(ans,dp[j-p[i].w]);
}
}
cout << ans;
}
# | 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... |