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 v>0, ta gọi v là ngoặc mở loại vv là ngoặc đóng loại v.

Một dãy số nguyên khác 0 đượ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 AB đều là dãy ngoặc đúng thì dãy ghép A rồi tới B cũng là dãy ngoặc đúng.
  • Nếu A là một dãy ngoặc đúng và v>0 là số nguyên, thì dãy gồm số v, sau đó là toàn bộ A, rồi tới số v cũng là một dãy ngoặc đúng.

Ví dụ, các dãy {1,1,1,2,2,1}{3,3} là dãy ngoặc đúng, còn {2,3} thì không.

Cho một dãy ngoặc đúng {x1,x2,,xn} đã bị mã hoá. Bản mã gồm hai phần:

  • Dãy {p1,p2,,pn} với pi=|xi| (loại của ngoặc tại mỗi vị trí).
  • Một tập t vị trí phân biệt {q1,q2,,qt} mà tại đó xi 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 {x1,x2,,xn} thoả mãn: |xi|=pi với mọi i, xqj<0 với mọi j, và dãy {x1,,xn} 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 n.
  • Dòng thứ hai chứa n số nguyên p1,p2,,pn.
  • Dòng thứ ba chứa số nguyên t, tiếp theo là t số nguyên phân biệt q1,q2,,qt.

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 n số nguyên x1,x2,,xn (|xi|=pi, xqj<0). Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1n106
  • 1pi109
  • 0tn
  • 1qin, các qi đô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 1,1 tạo thành dãy ngoặc đúng.
4
1 1 1 1
1 3
YES
1 1 -1 -1
t=1, vị trí bắt buộc âm là 3. Dãy 1,1,1,1 hợp lệ và x3=1<0.
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í 3,4 bắt buộc âm. Dãy 1,2,2,1 là ngoặc đúng (loại 2 lồng trong loại 1).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0