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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0