Xoá sạch multiset
Đề bài
Mô tả
Cho một multiset chứa các số nguyên. Ban đầu, multiset có phần tử bằng , phần tử bằng , ..., phần tử bằng .
Bạn có thể thực hiện hai loại thao tác:
- Chọn hai số nguyên và (), sau đó xoá đúng một lần xuất hiện của , một lần xuất hiện của , ..., một lần xuất hiện của khỏi multiset. Thao tác này chỉ thực hiện được khi mỗi số từ đến đều xuất hiện ít nhất một lần.
- Chọn hai số nguyên và (), sau đó xoá lần xuất hiện của khỏi multiset. Thao tác này chỉ thực hiện được khi multiset chứa ít nhất lần xuất hiện của .
Hãy tìm số thao tác tối thiểu cần thực hiện để xoá hết mọi phần tử khỏi multiset.
Dữ liệu vào
- Dòng đầu chứa một số nguyên .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
- In ra một số nguyên — số thao tác tối thiểu cần thực hiện để xoá hết mọi phần tử khỏi multiset.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 1 4 1 1 |
2 | Dùng thao tác loại 1 với để xoá một bản của mỗi số. Còn lại ba số , dùng thao tác loại 2 xoá cả ba cùng lúc. Tổng cộng thao tác. |
| 5 1 0 1 0 1 |
3 | Vì các vị trí và rỗng, không thao tác loại 1 nào với hoặc hợp lệ. Phải dùng ba thao tác loại 2 tách rời cho các số , , . |
| 4 3 3 3 3 |
3 | Dùng thao tác loại 1 ba lần với để xoá ba "lớp" trải đều trên cả bốn số. Tổng cộng thao tác. |
Bình luận