Submission #1017395

#TimeUsernameProblemLanguageResultExecution timeMemory
1017395Madhav_1608Knapsack (NOI18_knapsack)C++17
100 / 100
42 ms7480 KiB
using namespace std; #include <iostream> #include <stack> #include <queue> #include <string> #include <algorithm> #include <vector> #include <map> #include <set> #include <climits> #include <cmath> #include <unordered_map> #include <unordered_set> #include <numeric> // #include <bits/stdc++.h> // #include <ext/pb_ds/assoc_container.hpp> // #include <ext/pb_ds/tree_policy.hpp> // using namespace __gnu_pbds; // template <class T> // using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long ll; typedef vector<int> vi; typedef vector<string> vs; typedef vector<long long int> vll; typedef pair<ll,ll> pll; #define FOR(i,a,b) for(long long int i=a;i<b;i++) #define all(v) v.begin(),v.end() template <typename I> void print(vector<I> &v){ FOR(i,0,v.size()-1){cout << v[i] << " ";} cout << v.back() << "\n"; } ll gcd(ll a,ll b){ if(a==0){return b;} else if(b==0){return a;} else if(a<b){return gcd(b%a,a);} else{return gcd(a%b,b);} } ll lcm(ll a,ll b){ return (a/gcd(a,b))*b; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll s,n; cin >> s >> n; vll v(n); vll w(n); vll k(n); FOR(i,0,n){ cin >> v[i] >> w[i] >> k[i]; } vector<vector<pll>> weights(s+1); FOR(i,0,n){ weights[w[i]].push_back({v[i],k[i]}); } FOR(i,1,s+1){ if(!weights[i].empty()){ sort(all(weights[i])); } } vll total(s+1,0); FOR(i,1,s+1){ FOR(j,0,weights[i].size()){ total[i] += weights[i][j].second; } } vll ans(s+1,-1); ans[0] = 0; FOR(i,1,s+1){ ll curr = weights[i].size()-1; ll madhav = min(s/i,total[i]); FOR(j,0,madhav){ if(weights[i][curr].second==0){ curr--; } for(ll m=s;m>=i;m--){ if(ans[m-i]!=-1){ ans[m] = max(ans[m],ans[m-i]+weights[i][curr].first); } } weights[i][curr].second--; } } cout << *max_element(all(ans)) << "\n"; return 0; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:26:43: 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]
   26 | #define FOR(i,a,b) for(long long int i=a;i<b;i++)
......
   65 |         FOR(j,0,weights[i].size()){
      |             ~~~~~~~~~~~~~~~~~~~~~          
knapsack.cpp:65:9: note: in expansion of macro 'FOR'
   65 |         FOR(j,0,weights[i].size()){
      |         ^~~
#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...