Submission #1146273

#TimeUsernameProblemLanguageResultExecution timeMemory
1146273LeonidCukKnapsack (NOI18_knapsack)C++20
100 / 100
74 ms2060 KiB
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair<int,int>&a,pair<int,int>&b)
{
    return a.first>b.first;
}
int main()
{
    int k,n,a,b,c;
    cin>>k>>n;
    vector<pair<int,int>>v[k+1];
    long long int dp[k+1]={0};
    for(int i=0;i<n;i++)
    {
        cin>>a>>b>>c;
        v[b].push_back({a,c});
    }
    for(int i=0;i<=k;i++)
    {
        sort(v[i].begin(),v[i].end(),cmp);
    }
    for(int i=1;i<=k;i++)
    {
        if(v[i].size()==0)continue;
        for(int j=k;j>=i;j--)
        {
            int l=0,sum=0,t=v[i][0].second,sum1=0;
            while(j-sum1>=0)
            {
                dp[j]=max(dp[j],dp[j-sum1]+sum);
                if(t==0)
                {
                    l++;
                    if(l==v[i].size())break;
                    t=v[i][l].second;
                }
                sum1+=i;
                sum+=v[i][l].first;
                t--;
            }
        }
    }
    cout<<dp[k];
    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...