제출 #1183041

#제출 시각아이디문제언어결과실행 시간메모리
1183041chikien2009Knapsack (NOI18_knapsack)C++20
100 / 100
254 ms1628 KiB
#include <bits/stdc++.h> using namespace std; void setup() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); } int n, s; array<int, 3> p[100000]; long long f[2001]; inline bool comp(const array<int, 3> & ina, const array<int, 3> & inb) { return ina[0] * inb[1] > inb[0] * ina[1]; } int main() { setup(); cin >> s >> n; fill_n(f, s + 1, -1); f[0] = 0; for (int i = 0; i < n; ++i) { cin >> p[i][0] >> p[i][1] >> p[i][2]; } sort(p, p + n, comp); for (int i = 0; i < n; ++i) { for (int j = s; j >= 0; --j) { if (f[j] != -1) { for (int k = 1; k <= p[i][2] && j + k * p[i][1] <= s; ++k) { if (f[j + k * p[i][1]] > f[j] + k * p[i][0]) { break; } f[j + k * p[i][1]] = f[j] + k * p[i][0]; } } } } cout << (*max_element(f, f + s + 1)); 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...