Gộp các phần tử bằng nhau
Đề bài
Mô tả
Cho một mảng gồm số nguyên dương. Chừng nào trong mảng còn tồn tại ít nhất hai phần tử bằng nhau, ta thực hiện thao tác sau:
- Chọn giá trị nhỏ nhất xuất hiện từ hai lần trở lên trong mảng.
- Lấy hai vị trí xuất hiện đầu tiên (hai vị trí trái nhất) của . Xóa phần tử bên trái trong hai phần tử này, còn phần tử bên phải được thay bằng tổng của hai giá trị, tức là .
Sau khi xóa một phần tử, các phần tử còn lại giữ nguyên thứ tự tương đối của chúng (mảng "co lại").
Hãy xác định mảng sẽ trông như thế nào sau khi thực hiện tất cả các thao tác trên.
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên — số phần tử của mảng.
- Dòng thứ hai chứa số nguyên — các phần tử của mảng.
Dữ liệu ra
- Dòng đầu in ra số nguyên — số phần tử của mảng sau khi thực hiện xong các thao tác.
- Dòng thứ hai in ra số nguyên — các phần tử của mảng sau khi thực hiện xong các thao tác, theo đúng thứ tự.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 7 3 4 1 2 2 1 1 |
4 3 8 2 1 |
. Giá trị nhỏ nhất được gộp trước, sau đó đến , rồi . |
| 5 1 1 3 1 1 |
2 3 4 |
. |
| 5 10 40 20 50 30 |
5 10 40 20 50 30 |
Mọi phần tử đôi một khác nhau nên mảng không thay đổi. |
Bình luận