제출 #1339657

#제출 시각아이디문제언어결과실행 시간메모리
1339657ghungltKnapsack (NOI18_knapsack)C++20
100 / 100
77 ms3396 KiB
#include <algorithm>
#include <bits/stdc++.h>
#include <cctype>
using namespace std;

#define name "king2."
#define ll long long
#define vi vector<int>

const int N=1e7+5, mod=998244353, S=2005;
int n, s;
ll dp[S];
vector<pair<ll,ll>> ds[N];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    
    //freopen(name "in","r",stdin);
    //freopen(name "out","w",stdout);

    cin>>s>>n;
    for (int i=1;i<=n;i++){
        int v,w,c;
        cin>>v>>w>>c;
        ds[w].push_back({v, c});
    }

    for (int i=1;i<=s;i++){
        sort(ds[i].begin(),ds[i].end(),greater<pair<int,int>>());
        int wei=0;
        ll nwei=0;

        for(auto [val , sl] : ds[i]){
            for (int o=1;o<=sl;o++){
                wei += i;
                if(wei > s) break;
                for (int j=s;j>=i;j--)
                    dp[j] = max(dp[j] , dp[j - i] + val);
            }
            if(wei > s) break;
        }
    }

    cout<<dp[s];
    
    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...