fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n, L;
  5. int a[25];
  6. int ans;
  7.  
  8. void backtrack(int i, int X, int Y, int cnt) {
  9. if (i == n + 1) {
  10. ans = min(ans, cnt);
  11. return;
  12. }
  13.  
  14. // Thêm vào thùng 1
  15. if (X - a[i] >= 0) {
  16. backtrack(i + 1, X - a[i], Y, cnt);
  17. }
  18. else {
  19. backtrack(i + 1, L - a[i], Y, cnt + 1);
  20. }
  21.  
  22. // Thêm vào thùng 2
  23. if (Y - a[i] >= 0) {
  24. backtrack(i + 1, X, Y - a[i], cnt);
  25. }
  26. else {
  27. backtrack(i + 1, X, L - a[i], cnt + 1);
  28. }
  29. }
  30.  
  31. void do_sub1() {
  32. ans = 1e9;
  33. backtrack(1, L, L, 2);
  34. cout << ans << '\n';
  35. }
  36.  
  37. int main() {
  38. ios::sync_with_stdio(0); cin.tie(0);
  39. cin >> L >> n;
  40. for (int i = 1; i <= n; i++) cin >> a[i];
  41.  
  42. if (L <= 1e9 && n <= 20) do_sub1();
  43. }
  44.  
Success #stdin #stdout 0.01s 5312KB
stdin
8 6
4 2 5 3 5 4
stdout
3