Bài toán taxi

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 900 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Sau khi kết thúc buổi học, \(n\) nhóm bạn quyết định đến nhà Bob để dự tiệc sinh nhật của cậu. Biết rằng nhóm thứ \(i\)\(s_i\) bạn \((1 \leq s_i \leq 4)\) và họ muốn cùng nhau đi đến nhà Bob. Mọi người quyết định gọi xe taxi, mỗi xe chỉ có thể chứa tối đa bốn người. Bởi vì mọi người định sẽ mua thật nhiều quà cho Bob nên họ muốn tổng số tiền phải trả cho việc di chuyển là nhỏ nhất có thể. Vì vậy mọi người muốn số lượng xe taxi cần phải gọi là ít nhất.

Vì mọi người đang bận bàn về những món quà cần mua nên bạn hãy tính số lượng xe tối thiểu cho mọi người sao cho mọi thành viên trong nhóm đều ngồi cùng một xe (một xe có thể chứa nhiều nhóm).

Input

  • Dòng đầu tiên chứa một số nguyên \(n\) \((1 \leq n \leq 10^5)\) \(-\) số lượng nhóm học sinh.
  • Dòng tiếp theo chứa \(n\) số nguyên dương \(s_1, s_2, \ldots, s_n\) \((1 \leq s_i \leq 4)\) \(-\) số lượng người trong từng nhóm học sinh.

Output

  • In ra một số nguyên duy nhất là số lượng tối thiểu xe taxi cần gọi.

Example

Test 1

Input
5
1 3 4 3 2
Output
4
Note
  • Xe 1 chứa nhóm 1 và 2.
  • Xe 2 chứa nhóm 3.
  • Xe 3 chứa nhóm 4.
  • Xe 4 chứa nhóm 5.

Test 2

Input
4
3 4 4 1
Output
3

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.