Submission #975957

#TimeUsernameProblemLanguageResultExecution timeMemory
975957vjudge1Knapsack (NOI18_knapsack)C++17
49 / 100
50 ms4444 KiB
#pragma GCC optimize ("Ofast") #include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back using namespace std; #define FUL(i, a, N) for(int i = a; i < N; i++) #define FUE(i, a, N) for(int i = a; i <= N; i++) int S, N, ind, inow, iprev; pair<int, pair<int, int>> kue[100002]; pair<int, int> kuenow[100002]; int dp[2][2002]; int main(){ ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0); cin >> S >> N; FUE(i, 1, N){ cin >> kue[i].fi >> kue[i].se.fi >> kue[i].se.se; } if(N == 1){ cout << min(S / kue[1].se.fi, kue[1].se.se) * kue[1].fi; }else{ FUE(i, 1, N){ while(kue[i].se.se--){ ind++; kuenow[ind].fi = kue[i].fi; kuenow[ind].se = kue[i].se.fi; } } FUE(i, 1, ind){ inow = i % 2; iprev = 1 - inow; FUE(j, 1, S){ dp[inow][j] = dp[iprev][j]; if(j >= kuenow[i].se){ dp[inow][j] = max(dp[inow][j], dp[iprev][j - kuenow[i].se] + kuenow[i].fi); } } } cout << dp[ind % 2][S]; } return 0; }
#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...