제출 #683064

#제출 시각아이디문제언어결과실행 시간메모리
683064vjudge1Knapsack (NOI18_knapsack)C++17
100 / 100
100 ms36276 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define fi first #define se second #define int long long #define pii pair<int, int> #define tii tuple<int, int, int> #define ed '\n' #define task "D" using namespace std; const int M=1e9+7, N=2e3+3, INF=(int)1<<30; int s, n, dp[N][N]; map<int, vector<pii>> item; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); if (fopen(task".inp","r")) { freopen(task".inp","r",stdin); freopen(task".out","w",stdout); } cin>>s>>n; for (int i=0; i<n; i++) { int val, w, copies; cin>>val>>w>>copies; item[w].pb({val, copies}); } int it=1; for (auto &[w, items]: item) { sort(items.begin(), items.end(), greater<pii>()); for (int i=0; i<=s; i++) { dp[it][i]=dp[it-1][i]; int copies=0, ct=0, samew=0, sum=0; while ((copies+1)*w<=i && ct<items.size()) { sum+=items[ct].fi; copies++; if (dp[it-1][i-copies*w]!=-INF) dp[it][i]=max(dp[it][i], dp[it-1][i-copies*w]+sum); samew++; if (samew==items[ct].se) { samew=0; ct++; } } } it++; } it--; /*for (int i=1; i<=it; i++) { for (int j=0; j<=s; j++) cout<<dp[i][j]<<" "; cout<<ed; }*/ int ans=0; for (int i=1; i<=s; i++) ans=max(ans, dp[it][i]); cout<<ans<<ed; }

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

knapsack.cpp: In function 'int main()':
knapsack.cpp:39:41: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |             while ((copies+1)*w<=i && ct<items.size()) {
      |                                       ~~^~~~~~~~~~~~~
knapsack.cpp:24:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |   freopen(task".inp","r",stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
knapsack.cpp:25:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |   freopen(task".out","w",stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#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...