Advertisement
tumaryui

Untitled

May 25th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. int main() {
  7. int L, n; // L - длина нити n - количество разных отрезков на которые мы можем делить
  8. cin >> L >> n;
  9. int dp[L + 1]; // Массив в котором храним ответ, сколько максимум цены можно набрать для веса i
  10.  
  11. memset(dp, 0, sizeof dp); // пока не знаем ответ поэтому максимум можнем набрать 0
  12.  
  13.  
  14. int w[n], c[n]; // длина отрезка i и его цена
  15.  
  16. // ввод
  17. for(int i = 0; i < n; i++) {
  18. cin >> w[i] >> c[i];
  19. }
  20.  
  21. // рекурентное соотношение
  22. // для каждого веса i считаем сколько максимум цены можно набрать используя первые j предметов
  23.  
  24.  
  25. for(int i = 0; i < n; i++) {
  26. for(int j = 0; j <= L; j++) {
  27. dp[j] = max(dp[j], dp[j - w[i]] + c[i]);
  28. }
  29. }
  30. int ans = 0;
  31.  
  32. // ищем ответ среди всех весов
  33. for(int i = 0; i <= L; i++) {
  34. ans = max(ans, dp[i]);
  35. }
  36. cout << ans;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement