#1669. CHIA DÃY (TAXIPART)

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 A gồm n phần tử A_1, A_2, \dots, A_n , trong đó giá trị của mỗi phần tử A_i chỉ nằm trong tập hợp \{1, 2, 3, 4\} .

Yêu cầu: Hãy phân chia tất cả n phần tử của dãy vào các nhóm sao cho tổng các phần tử trong mỗi nhóm không vượt quá 4 . Hãy tìm số lượng nhóm ít nhất có thể đạt được. Lưu ý rằng mỗi phần tử A_i là một thực thể đơn lẻ, không thể chia nhỏ để đưa vào các nhóm khác nhau.

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên n ( 1 \le n \le 10^5 ).
  • Dòng thứ hai chứa n số nguyên A_1, A_2, \dots, A_n ( 1 \le A_i \le 4 ).

Kết quả:

  • In ra một số nguyên duy nhất là số lượng nhóm tối thiểu tìm được.

Ví dụ:

Dữ liệu:

5
1 2 4 3 3

Kết quả:

4

Giải thích:

  • Nhóm 1: Chứa phần tử có giá trị 4 (Tổng = 4).
  • Nhóm 2: Chứa một phần tử giá trị 3 và một phần tử giá trị 1 (Tổng = 3+1=4 ).
  • Nhóm 3: Chứa một phần tử giá trị 3 (Tổng = 3).
  • Nhóm 4: Chứa một phần tử giá trị 2 (Tổng = 2).

Dữ liệu:

8
2 3 4 4 2 1 3 1

Kết quả:

5

Giải thích:

  • Hai nhóm chứa hai phần tử 4 .
  • Hai nhóm chứa cặp (3, 1) .
  • Một nhóm chứa hai phần tử 2 .

Giới hạn:

  • Subtask #1 (10% số điểm): n \le 15 .
  • Subtask #2 (10% số điểm): A_i \in \{3, 4\} với mọi i .
  • Subtask #3 (20% số điểm): A_i \in \{1, 2\} với mọi i .
  • Subtask #4 (25% số điểm): n \le 1000 .
  • Subtask #5 (35% số điểm): Không có ràng buộc bổ sung ( n \le 10^5 ).