제출 #532707

#제출 시각아이디문제언어결과실행 시간메모리
532707mihhKnapsack (NOI18_knapsack)C++17
0 / 100
1097 ms170692 KiB
#include <bits/stdc++.h> #define db(x) cerr << #x <<":"<<x<<" " using namespace std; const int INF=1e9, MOD=1e9+7; const int N=1e5+2; typedef array<int,3>item ; int main(){ #ifndef ONLINE_JUDGE freopen("frog.in", "r", stdin); freopen("frog.out", "w", stdout); #endif int n, kg; cin>>kg>>n; vector<item> a(n+1); unordered_map<int,vector<item>> byWeight; for(int i=1;i<=n;++i){ cin>>a[i][0]>>a[i][1]>>a[i][2]; byWeight[a[i][1]].push_back(a[i]); // auto[v,w,k]=a[i]; // 0 1 2 } int i=0; vector<vector<int>> bst(byWeight.size()+1,vector<int>(kg+1,INT32_MIN)); bst[0][0]=0; for(auto &[w, itms]:byWeight){ ++i; sort(itms.begin(), itms.end(), std::greater<item>()); db(w); for(int j=0;j<=kg;++j){ bst[i][j]=bst[i-1][j]; int profit=0; for(int curr=0,r=1,currUsed=0; curr<(int)itms.size() and r*w<=j; ++r){ profit+=itms[curr][0]; ++currUsed; bst[i][j]=max( bst[i][j], bst[i-1][j-r*w]+profit ); if(currUsed==itms[curr][2]){ ++curr; currUsed=0; } } } } int ans=0; for(int i=1;i<=kg;++i) ans=max(ans,bst[byWeight.size()][i]); cout<<ans; }

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

knapsack.cpp: In function 'int main()':
knapsack.cpp:11:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     freopen("frog.in", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
knapsack.cpp:12:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     freopen("frog.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...