Submission #762858

#TimeUsernameProblemLanguageResultExecution timeMemory
762858LeaRouseKnapsack (NOI18_knapsack)C++14
100 / 100
669 ms126188 KiB
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0);
#define ll long long
#define ff first
#define ss second
using namespace std;
const int MAX=2e3+5;
const int INF=2e9+1;
vector<int>B;
vector<int>C;    
vector<pair<int,int>>v[MAX];
int s,n,dp[MAX*11][MAX];
int Dp(int ind,int peso){
    if(peso>s)  return -INF;
    if(ind==B.size())   return 0;
    if(dp[ind][peso]!=-INF) return dp[ind][peso];
    //lo toma
    dp[ind][peso]=max(dp[ind][peso],Dp(ind+1,peso+C[ind])+B[ind]);
    dp[ind][peso]=max(dp[ind][peso],Dp(ind+1,peso));
    return dp[ind][peso];
}

void go(){   
    cin>>s>>n;
    for(int i=0;i<n;i++){
        int a,b,c;  cin>>a>>b>>c;
        v[b].push_back({a,c});
    }
    for(int i=1;i<=s;i++){
        sort(v[i].begin(),v[i].end());
        reverse(v[i].begin(),v[i].end());
    }
    for(int i=s;i>=1;i--){
        int aux=s/i;
        for(auto it:v[i]){
            int ns=it.ss;
            while(aux!=0 and ns!=0){
                B.push_back(it.ff);
                C.push_back(i);
                aux--;
                ns--;
            } 
        }
    }
    for(int i=0;i<=B.size();i++){
        for(int j=0;j<=s;j++){
            dp[i][j]=-INF;
        }
    }
    cout<<Dp(0,0)<<endl;
}
int main(){
    fastio;
    //freopen("time.in", "r", stdin);
    //freopen("time.out", "w", stdout);
    go();
    return 0;
}

Compilation message (stderr)

knapsack.cpp: In function 'int Dp(int, int)':
knapsack.cpp:15:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     if(ind==B.size())   return 0;
      |        ~~~^~~~~~~~~~
knapsack.cpp: In function 'void go()':
knapsack.cpp:45:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for(int i=0;i<=B.size();i++){
      |                 ~^~~~~~~~~~
#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...