제출 #488584

#제출 시각아이디문제언어결과실행 시간메모리
488584A_DKnapsack (NOI18_knapsack)C++14
0 / 100
138 ms137032 KiB
#include <bits/stdc++.h>

#define int long long
#define ii pair<int,int>
#define F first
#define S second

using namespace std;
const int N=2e3+100;
vector<int> vec;
vector<int> w;
int szz[N];
int sz;
pair<ii,int> a[N];
int dp[N][N];
void solve()
{
    vec.push_back(0);
    w.push_back(0);
    int s,n;
    cin>>s>>n;
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i].F.F);
        scanf("%lld",&a[i].F.S);
        scanf("%lld",&a[i].S);
    }
    sort(a+1,a+n+1);
    reverse(a+1,a+n+1);
    for(int i=1;i<=n;i++){
        //cout<<a[i].S<<" "<<a[i].F.S<<" "<<szz[i]<<endl;
        while(a[i].S&&n>a[i].F.S*szz[i]){
            a[i].S--;
            szz[a[i].F.S]++;
            vec.push_back(a[i].F.F);
            w.push_back(a[i].F.S);
            sz++;
        }
    }
    for(int i=1;i<=sz;i++){
        for(int j=1;j<w[i];j++){
            dp[i][j]=dp[i-1][j];
          //  cout<<dp[i][j]<<" ";
        }
        for(int j=w[i];j<=s;j++){
            dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+vec[i]);
    //        cout<<dp[i][j]<<" ";
        }
      //  cout<<endl;
    }
    cout<<dp[sz][s]<<endl;
}
main()
{

    //freopen("face.in","r",stdin);
    //freopen("face.out","w",stdout);
    int t=1;
//    cin>>t;
    while(t--){
        solve();
    }
}

컴파일 시 표준 에러 (stderr) 메시지

knapsack.cpp:52:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   52 | main()
      | ^~~~
knapsack.cpp: In function 'void solve()':
knapsack.cpp:23:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |         scanf("%lld",&a[i].F.F);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
knapsack.cpp:24:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |         scanf("%lld",&a[i].F.S);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
knapsack.cpp:25:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |         scanf("%lld",&a[i].S);
      |         ~~~~~^~~~~~~~~~~~~~~~
#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...