Submission #497109

#TimeUsernameProblemLanguageResultExecution timeMemory
497109Blistering_BarnaclesKnapsack (NOI18_knapsack)C++11
100 / 100
104 ms49304 KiB
//apig's property //Happiness can be found, even in the darkest of times, if one only remembers to turn on the light //El Pueblo Unido Jamas Sera Vencido //Do or do not... there is no try //Billions of bilious blue blistering barnacles in a thundering typhoon! #include<bits/stdc++.h> #define fast ios_base::sync_with_stdio(0) , cin.tie(0) , cout.tie(0) #define F first #define S second #define pb push_back #define vll vector< ll > #define vpll vector< pll > #define vi vector< int > #define pll pair< ll , ll > #define pi pair< int , int > #define all(s) s.begin() , s.end() #define sz(s) s.size() #define str string #define md ((s + e) / 2) #define mid ((l + r) / 2) #define msdp(dp) memset(dp , -1 , sizeof dp) #define mscl(dp) memset(dp , 0 , sizeof dp) #define C continue #define R return #define B break #define lx node * 2 #define rx node * 2 + 1 #define br(o) o ; break #define co(o) o ; continue using namespace std; typedef long long ll; ll q, dp[2005][2005] , a[555555] , b[555555], k, l, m, n, o, p; map < ll , ll > mp; vpll W[555555]; const ll mod = 1e9+7; ll s; void solve(){ cin >> s >> n ; ll mx = 0 ; for(ll i = 1 ; i <= n ; i++){ cin >> p >> o >> k ; W[o].pb({p , k}) ; mx = max(mx , o) ; } dp[0][0] = 0 ; ll ans = 0 ; for(ll i = 1 ; i <= mx ; i++){ sort(all(W[i])) ; reverse(all(W[i])) ; for(ll S = 0 ; S <= s ; S++){ dp[i][S] = dp[i - 1][S] ; ll j = 0 , cnt = 1 , p = 0 , k = 0 ; while(i * cnt <= S && j < sz(W[i])){ p += W[i][j].F ; dp[i][S] = max(dp[i][S] , dp[i - 1][S - cnt * i] + p) ; cnt++ , k++ ; ans = max(ans , dp[i][S]) ; if(k == W[i][j].S){ k = 0 ; j++ ; } } } } cout << ans << endl ; } int main(){ fast ; q = 1 ; //cin >> q ; while(q--){ solve() ; } }

Compilation message (stderr)

knapsack.cpp: In function 'void solve()':
knapsack.cpp:53:37: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |             while(i * cnt <= S && j < sz(W[i])){
      |                                     ^
#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...