Khôi phục xâu nhị phân

Đề bài

Mô tả

Với mỗi xâu nhị phân s (chỉ gồm các ký tự 01) ta định nghĩa bốn số nguyên a00, a01, a10, a11, trong đó axy là số cặp vị trí (i,j) với i<j, si=xsj=y. Nói cách khác, axy là số dãy con độ dài 2 của s bằng đúng dãy {x,y}.

Cho trước bốn số a00, a01, a10, a11, hãy tìm một xâu nhị phân khác rỗng s tương ứng với bốn số đó, hoặc cho biết không tồn tại xâu nào như vậy.

Có thể chứng minh rằng nếu tồn tại đáp án thì luôn tồn tại một đáp án có độ dài không vượt quá 106.

Nếu có nhiều xâu thoả mãn, in ra xâu bất kỳ.

Dữ liệu vào

Một dòng duy nhất chứa bốn số nguyên không âm a00, a01, a10, a11.

Dữ liệu ra

In ra một xâu nhị phân khác rỗng thoả mãn bốn số đã cho, độ dài không vượt quá 106.

Nếu không tồn tại xâu nào, in ra Impossible.

Ràng buộc

  • 0a00,a01,a10,a11109
  • Độ dài xâu in ra phải nằm trong đoạn [1,106]

Ví dụ

Input Output Giải thích
1 2 3 4 Impossible a11=4 đòi hỏi số ký tự 1c1 với (c12)=4, nhưng không có số nguyên c1 nào thoả mãn.
1 2 2 1 0110 Xâu có hai ký tự 0 và hai ký tự 1, nên a00=a11=1. Mỗi ký tự 0 ở đầu đứng trước hai ký tự 1 nhưng ký tự 0 cuối thì không, cho a01=2; tương tự a10=2. Các đáp án khác như 1001 cũng được chấp nhận.
0 0 1 0 10 Chỉ có một cặp 1 đứng trước 0. Xâu 10 là đáp án ngắn nhất.

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