fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. void solve()
  6. {
  7. int n;
  8. cin >> n;
  9. vector<int> a(n);
  10. int i, j;
  11. // Nhập mảng
  12. for (auto &i : a)
  13. cin >> i;
  14.  
  15. // Kết quả cuối cùng của bài toán.
  16. int ans = INT_MAX;
  17.  
  18.  
  19. while (clock() <= 0.1 * CLOCKS_PER_SEC)
  20. {
  21. int b1 = 0, b2 = 0, b3 = 0;
  22. // Xáo trộn mảng
  23. random_shuffle(begin(a), end(a));
  24. int f = 0, flag = 1;
  25. // Duyệt mảng
  26. for (auto j : a)
  27. {
  28. // Tìm nhóm đang có tổng bé nhất để cộng vào
  29. int m = min({b1, b2, b3});
  30. if (b1 == m)
  31. b1 += j;
  32. else if (b2 == m)
  33. b2 += j;
  34. else
  35. b3 += j;
  36.  
  37. // Đoạn này là để tối ưu code, nếu đang duyệt mà số nhỏ nhất
  38. // đã lớn hơn kết quả tối ưu hiện tại thì chẳng có lí do gì để duyệt tiếp cả.
  39. if (min({b1, b2, b3}) > ans)
  40. {
  41. flag = 0;
  42. break;
  43. }
  44. }
  45. if (flag)
  46. ans = min(ans, max({b1, b2, b3}));
  47. }
  48. cout << ans;
  49. }
  50.  
  51. /*--------------------------------- MAIN FUNC ---------------------------------------------------*/
  52.  
  53. int main()
  54. {
  55. ios::sync_with_stdio(false);
  56. cin.tie();
  57. solve();
  58. return 0;
  59. }
Time limit exceeded #stdin #stdout 5s 7883928KB
stdin
Standard input is empty
stdout
Standard output is empty