Chia nhóm đồ án


Submit solution

Points: 2 (partial)
Time limit: 0.5s
Memory limit: 64M

Author:
Problem type

Để làm khóa luận tốt nghiệp, các sinh viên trong lớp phải lập thành nhóm với quy tắc:

Mỗi nhóm sinh viên phải có ít nhất 3 người và tối đa 4 người. Tất cả các sinh viên đều phải có nhóm.

Cho mảng groups chứa thông tin về các nhóm sinh viên trong lớp. Phần tử có giá trị 1 trong mảng biểu thị việc nhóm này mới có một sinh viên, các phần tử có giá trị 2, 3, 4 biểu thị các nhóm đã có 2, 3, 4 sinh viên. Biết một sinh viên bất kì có thể tham gia vào một nhóm nếu nhóm đó chưa đủ 4 người. Việc một sinh viên tham gia một nhóm được xem là một phép chuyển.

Yêu cầu: bạn hãy viết chương trình nhập vào mảng các số biểu diễn số sinh viên trong các nhóm và in ra màn hình số phép chuyển tối thiểu để cả lớp có thể thực hiện khóa luận tốt nghiệp. Nếu không có cách chuyển nào thỏa mãn thì in ra màn hình -1.

Đầu vào

Dòng đầu tiên chứa số nguyên n (1 <= n <= 100000) là số nhóm đang có sẵn trong lớp. Dòng tiếp theo là mảng groups bao gồm n số nguyên dương là số là số sinh viên trong mỗi nhóm (1 <= groups[i] <= 4).

Đầu ra

Số phép biến đổi ít nhất để cả lớp có thể thực hiện khóa luận tốt nghiệp, nếu không thỏa mãn cách biến đổi để cả lớp tốt nghiệp thì in ra -1.

Ví dụ 1

Input

5
3 2 4 2 1

Output

2


Comments

There are no comments at the moment.