Submission #794334

#TimeUsernameProblemLanguageResultExecution timeMemory
794334diponkinuKnapsack (NOI18_knapsack)C++14
100 / 100
45 ms5504 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, s, v[100005], w[100005], k[100005], a[2005];
vector<vector<pair<int,int>>> sv(2001, vector<pair<int,int>>());
signed main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin >> s >> n;
	for(int i = 1; i <= n; i++){
		cin >> v[i] >> w[i] >> k[i];
		sv[w[i]].push_back({v[i], k[i]});
	}
	for(int i = 1; i <= s; i++){
		sort(sv[i].begin(), sv[i].end(), greater<pair<int,int>>());
		int st = 0;
		for(int j = 1; j <= s/i; j++){
			if(st >= sv[i].size())break;
			for(int k = s; k >= i; k--){
				a[k] = max(a[k], a[k - i] + sv[i][st].first);
			}
			sv[i][st].second -=1;
			if(sv[i][st].second==0)st++;
		}
	}
	cout << a[s];
	// for(int i = 0; i <)
	// for(int i = 1; i <= n; i++){
		// for(int j = s; j >= w[i]; j--){
			// // a[j] = min(a[j], a[j])
			// for(int o = min(k[i], j/w[i]); o > 0; o--){
				// a[j] = max(a[j], a[j-w[i]*o] + v[i]*o);
			// }
		// }
	// }
	// cout << a[s];
}

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:17:10: 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]
   17 |    if(st >= sv[i].size())break;
      |       ~~~^~~~~~~~~~~~~~~
#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...