Chia mảng
Đề bài
Mô tả
Cho một mảng gồm số nguyên dương.
Ta muốn cắt mảng thành hai phần liên tiếp không rỗng: một tiền tố và một hậu tố, sao cho tổng các phần tử của hai phần bằng nhau. Điều này không phải lúc nào cũng làm được ngay, nên trước khi cắt ta được phép di chuyển đúng một phần tử: xoá một phần tử khỏi vị trí hiện tại của nó rồi chèn lại vào một vị trí tuỳ ý trong mảng. Chèn lại vào đúng vị trí cũ cũng được tính là một lần di chuyển, nên thực chất ta luôn có quyền giữ nguyên mảng.
Hãy xác định xem sau khi chọn phần tử cần di chuyển và vị trí chèn mới của nó, có thể cắt mảng như trên hay không.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số phần tử của mảng.
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
In ra YES nếu có thể cắt mảng theo yêu cầu, ngược lại in ra NO.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 1 3 2 |
YES | Chuyển phần tử thứ hai (giá trị ) xuống cuối mảng, được . Cắt sau vị trí thứ hai: . |
| 5 1 2 3 4 5 |
NO | Tổng bằng là số lẻ nên hai phần không thể có tổng bằng nhau. |
| 5 2 2 3 4 5 |
YES | Chuyển phần tử thứ tư (giá trị ) sang trái một vị trí, được . Cắt sau vị trí thứ ba: . |
| 5 10 10 40 10 10 |
YES | Chuyển phần tử lên đầu mảng, được . Cắt sau vị trí đầu tiên: . |
Bình luận