제출 #500783

#제출 시각아이디문제언어결과실행 시간메모리
500783pootyKnapsack (NOI18_knapsack)C++17
73 / 100
1004 ms3184 KiB
#define REP(i, n) for(int i = 0; i < n; i ++) #define REPL(i,m, n) for(int i = m; i < n; i ++) #define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++) #define SORT(arr) sort(arr.begin(), arr.end()) #define LSOne(S) ((S)&-(S)) #define M_PI 3.1415926535897932384 #define INF 999999999 #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; typedef long long ll; typedef vector<ll> vll; typedef vector<vll> vvll; typedef double ld; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int s,n;cin>>s>>n; vll varr(n); vi warr(n); vi karr(n); REP(i, n) { cin>>varr[i]>>warr[i]>>karr[i]; } vll flyingtable(s+1, 0); REP(i, n) { vll newtable(s+1, 0); REP(j, s+1) { ll excess = 0; ll tot = karr[i]; for (int w = j; w < s+1 && tot >= 0; w += warr[i]) { newtable[w] = max(newtable[w], flyingtable[j] + excess); excess += varr[i]; tot--; } }swap(flyingtable, newtable); } ll curmx = 0; REP(i, s+1) { curmx = max(curmx, flyingtable[i]); }cout<<curmx; }
#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...