Làm rối mã nguồn
Đề bài
Mô tả
Một chương trình gốc chứa nhiều tên biến (mỗi tên là một dãy ký tự, chương trình không dùng tên biến chỉ có một chữ cái). Người ta làm rối chương trình bằng cách sau: xét tên biến đầu tiên xuất hiện, thay mọi lần xuất hiện của nó bằng chữ cái ; rồi xét tên biến tiếp theo chưa được thay, thay mọi lần xuất hiện của nó bằng chữ cái ; cứ như vậy dùng lần lượt theo đúng thứ tự bảng chữ cái. Chương trình có nhiều nhất tên biến khác nhau.
Sau khi làm rối, người ta xoá hết dấu cách và ký tự xuống dòng, thu được một xâu gồm các chữ cái thường. Cho xâu , hãy kiểm tra xem có thể là kết quả của quá trình làm rối nói trên hay không.
Nói cách khác, hợp lệ khi và chỉ khi: khi duyệt từ trái sang phải, một chữ cái mới chỉ được phép xuất hiện lần đầu nếu tất cả các chữ cái đứng trước nó trong bảng chữ cái đều đã xuất hiện trước đó. Đặc biệt, chữ cái xuất hiện đầu tiên trong (nếu có) phải là .
Dữ liệu vào
Một dòng duy nhất chứa xâu gồm các chữ cái Latinh thường ().
Dữ liệu ra
In ra YES nếu có thể là kết quả của quá trình làm rối, ngược lại in ra NO (không có dấu ngoặc kép).
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| abacaba | YES | Các chữ cái mới xuất hiện lần lượt là rồi rồi , đúng thứ tự. Chẳng hạn ứng với danh sách tên biến "number string number character number string number". |
| jinotega | NO | Chữ cái đầu tiên là chứ không phải , nên không thể là kết quả làm rối. |
| ac | NO | Chữ cái xuất hiện trong khi chưa từng xuất hiện. |
Bình luận