#1668. CHIA TẬP (MINSET)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một dãy số nguyên dương A gồm n phần tử A_1, A_2, \dots, A_n .

Nhiệm vụ của bạn là chọn ra một tập hợp con gồm ít phần tử nhất từ dãy số đã cho, sao cho tổng giá trị của các phần tử được chọn nghiêm ngặt lớn hơn tổng giá trị của các phần tử còn lại không được chọn.

Cụ thể, gọi S là tập các chỉ số của các phần tử được chọn ( S \subseteq \{1, 2, \dots, n\} ). Tìm giá trị |S| nhỏ nhất thỏa mãn:

\sum_{i \in S} A_i > \sum_{j \notin S} A_j

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên duy nhất n ( 1 \le n \le 2 \cdot 10^5 ).
  • Dòng thứ hai chứa n số nguyên dương A_1, A_2, \dots, A_n ( 1 \le A_i \le 10^9 ).

Kết quả:

  • In ra một số nguyên duy nhất là số lượng phần tử ít nhất cần chọn.

Ví dụ:

Dữ liệu:

3
2 1 2

Kết quả:

2

Giải thích:

  • Tổng của cả dãy là 2 + 1 + 2 = 5 .
  • Nếu chọn hai phần tử \{2, 2\} , tổng là 4 . Phần tử còn lại là \{1\} , tổng là 1 . Vì 4 > 1 nên số lượng phần tử tối thiểu là 2 . (Nếu chỉ chọn một phần tử có giá trị 2 , tổng là 2 , không lớn hơn tổng phần còn lại là 2 + 1 = 3 ).

Dữ liệu:

6
1 1 1 2 2 2

Kết quả:

3

Giải thích:

  • Tổng của cả dãy là 9 . Một nửa tổng là 4.5 .
  • Ta cần chọn các phần tử sao cho tổng của chúng lớn hơn 4.5 .
  • Chọn ba phần tử có giá trị lớn nhất là \{2, 2, 2\} có tổng là 6 > 4.5 . Số lượng ít nhất là 3 .

Giới hạn:

  • Subtask #1 (15% số điểm): n \le 20 .
  • Subtask #2 (20% số điểm): n \le 2000 .
  • Subtask #3 (10% số điểm): Các phần tử trong dãy bằng nhau ( A_1 = A_2 = \dots = A_n ).
  • Subtask #4 (25% số điểm): n \le 2 \cdot 10^5 \sum_{i=1}^n A_i \le 2 \cdot 10^9 .
  • Subtask #5 (30% số điểm): Không có ràng buộc bổ sung.