제출 #947134

#제출 시각아이디문제언어결과실행 시간메모리
947134sandrofeiqrishviliKnapsack (NOI18_knapsack)C++14
100 / 100
97 ms3156 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define ff first #define ss second #define int long long const int N = 2005, inf=1e18; vector <pair <int, int> > vec[N], g; int dp[N]; int ans=0; signed main(){ int s, n, v, w, r; cin >> s >> n; for(int i=1; i<=n; i++){ cin >> v >> w >> r; vec[w].pb({v,r}); } for (int i=1; i<=s; i++) { sort(vec[i].begin(),vec[i].end()); reverse(vec[i].begin(), vec[i].end()); int tot = s/i; for(int j=0; j<vec[i].size(); j++){ int val = vec[i][j].ff; int raod = vec[i][j].ss; for (int x=1; x<=min(raod, tot); x++) { g.pb({i,val}); } if(tot>=raod){ tot-=raod; } else { tot=0; break; } } } n=g.size(); for(int i=1; i<=n; i++){ int w=g[i-1].ff; int val=g[i-1].ss; for(int j=s; j>=0; j--){ if (j>=w) dp[j]=max(dp[j], dp[j-w]+val); ans=max(ans, dp[j]); } } cout << ans; }

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

knapsack.cpp: In function 'int main()':
knapsack.cpp:22:17: 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]
   22 |   for(int j=0; j<vec[i].size(); j++){
      |                ~^~~~~~~~~~~~~~
#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...