Dãy ngoặc chính
Đề bài
Mô tả
Một loại ngoặc được biểu diễn bằng một số nguyên dương. Với một số nguyên , ta gọi là ngoặc mở loại và là ngoặc đóng loại .
Một dãy số nguyên khác được gọi là dãy ngoặc đúng nếu nó được sinh ra theo các quy tắc sau:
- Dãy rỗng là một dãy ngoặc đúng.
- Nếu và đều là dãy ngoặc đúng thì dãy ghép rồi tới cũng là dãy ngoặc đúng.
- Nếu là một dãy ngoặc đúng và là số nguyên, thì dãy gồm số , sau đó là toàn bộ , rồi tới số cũng là một dãy ngoặc đúng.
Ví dụ, các dãy và là dãy ngoặc đúng, còn thì không.
Cho một dãy ngoặc đúng đã bị mã hoá. Bản mã gồm hai phần:
- Dãy với (loại của ngoặc tại mỗi vị trí).
- Một tập vị trí phân biệt mà tại đó chắc chắn là số âm (là ngoặc đóng). Lưu ý đây có thể không phải là tất cả các vị trí âm trong dãy gốc.
Hãy khôi phục lại một dãy thoả mãn: với mọi , với mọi , và dãy là một dãy ngoặc đúng. Nếu có nhiều đáp án, in ra một đáp án bất kỳ. Nếu không tồn tại, thông báo điều đó.
Dữ liệu vào
- Dòng đầu chứa số nguyên .
- Dòng thứ hai chứa số nguyên .
- Dòng thứ ba chứa số nguyên , tiếp theo là số nguyên phân biệt .
Dữ liệu ra
- Nếu không tồn tại dãy hợp lệ, in ra một dòng duy nhất chứa NO.
- Ngược lại, in ra YES ở dòng đầu, và ở dòng thứ hai in số nguyên (, ). Nếu có nhiều đáp án, in ra một đáp án bất kỳ.
Ràng buộc
- , các đôi một phân biệt.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 1 1 0 |
YES 1 -1 |
Không vị trí nào bị bắt buộc âm. Chọn tạo thành dãy ngoặc đúng. |
| 4 1 1 1 1 1 3 |
YES 1 1 -1 -1 |
, vị trí bắt buộc âm là . Dãy hợp lệ và . |
| 3 1 1 1 0 |
NO | Độ dài lẻ nên không thể ghép cặp thành dãy ngoặc đúng. |
| 4 1 2 2 1 2 3 4 |
YES 1 2 -2 -1 |
Vị trí bắt buộc âm. Dãy là ngoặc đúng (loại 2 lồng trong loại 1). |
Bình luận