#TP00002. Mảng Kalindrome (Kalindrome Array)
Mảng Kalindrome (Kalindrome Array)
Mảng Kalindrome (Kalindrome Array)
Nguồn: Codeforces
Phiên bản: Phước Hưng OJ Extended
Đề bài
Một mảng được gọi là đối xứng nếu:
với mọi .
Mảng rỗng cũng được xem là một mảng đối xứng.
Một mảng được gọi là kalindrome nếu tồn tại một số nguyên sao cho ta có thể xóa một số phần tử có giá trị bằng , và sau khi ghép các phần còn lại lại với nhau, mảng thu được là một mảng đối xứng.
Lưu ý:
- Chỉ được chọn một giá trị duy nhất.
- Sau khi chọn , chỉ những phần tử có giá trị bằng mới được phép xóa.
- Không bắt buộc phải xóa tất cả các phần tử bằng .
- Cũng không bắt buộc phải xóa phần tử nào. Vì vậy, mọi mảng vốn đã đối xứng đều là kalindrome.
Ví dụ:
- là kalindrome vì bản thân mảng đã đối xứng, nên không cần xóa phần tử nào.
- là kalindrome. Có thể chọn và xóa hai phần tử bằng , thu được , là một mảng đối xứng.
- không phải là kalindrome.
Cho mảng:
Hãy xác định xem có phải là một mảng kalindrome hay không.
Input
Dòng đầu tiên chứa số nguyên — số phần tử của mảng.
Dòng thứ hai chứa số nguyên:
Output
In ra:
YESnếu mảng là kalindrome;NOnếu mảng không phải là kalindrome.
Có thể in các chữ cái dưới dạng chữ hoa hoặc chữ thường.
Subtask
- Subtask 1 — 30% — Time Limit: 1.00 s: ; .
- Subtask 2 — 70% — Time Limit: 1.00 s: ; .
Ví dụ
Ví dụ 1
Input
1
1
Output
YES
Giải thích
Mảng ban đầu là:
Mảng chỉ có một phần tử nên đã đối xứng.
Ta không cần xóa bất kỳ phần tử nào. Vì vậy mảng là kalindrome và kết quả là YES.
Ví dụ 2
Input
2
1 2
Output
YES
Giải thích
Mảng ban đầu là:
Chọn:
Xóa phần tử có giá trị , ta thu được:
Mảng là đối xứng.
Do đó mảng ban đầu là kalindrome và kết quả là YES.
Ví dụ 3
Input
3
1 2 3
Output
NO
Giải thích
Mảng ban đầu là:
Mảng này không đối xứng.
Nếu chọn và xóa phần tử , ta thu được:
không đối xứng.
Nếu chọn và xóa phần tử , ta thu được:
không đối xứng.
Nếu chọn và xóa phần tử , ta thu được:
cũng không đối xứng.
Việc không xóa phần tử nào cũng không tạo được mảng đối xứng.
Vì chỉ được chọn một giá trị , không tồn tại cách xóa hợp lệ nào để biến mảng thành đối xứng.
Do đó kết quả là NO.
Ví dụ 4
Input
5
1 4 4 1 4
Output
YES
Giải thích
Mảng ban đầu là:
Có thể chọn:
và chỉ xóa phần tử cuối cùng.
Mảng còn lại là:
Ta có phần tử thứ nhất bằng phần tử thứ tư và phần tử thứ hai bằng phần tử thứ ba, nên đây là một mảng đối xứng.
Vì vậy mảng ban đầu là kalindrome và kết quả là YES.
Một cách khác cũng hợp lệ là chọn , xóa hai phần tử bằng để thu được:
cũng là một mảng đối xứng.