Chuỗi tốt

View as PDF

Submit solution

Points: 100.00 (partial)
Time limit: 1.0s
Memory limit: 258M
Input: stdin
Output: stdout

Author:
Suggester:
Problem type
Allowed languages
C++, Python

Một cặp chuỗi (S,T) gồm các ký tự 01 được gọi là "tốt" khi và chỉ khi tất cả các điều kiện sau được thỏa mãn:

  • ST có cùng số lượng ký tự 0.
  • ST có cùng số lượng ký tự 1.
  • Độ dài của ST phải bằng nhau.

Để tạo ra một cặp chuỗi tốt (S,T), chúng ta định nghĩa đồ thị vô hướng G(S,T) như sau:

  1. Gọi L là độ dài của S. Vẽ đồ thị G với các đỉnh từ 1 đến L.
  2. Gọi n là số lượng ký tự 0 trong S. Chỉ số của các ký tự 0 trong S là ~1 ≤ a_1 < a_2 < ... < a_n ≤ L~. Tương tự, gọi các chỉ số của ký tự 0 trong T là ~b_1,b_2,...,b_n~. Với mỗi 1 ≤ i ≤ n, thêm một cạnh giữa các đỉnh ~a_i~ và ~b_i~ vào đồ thị G.
  3. Gọi m là số lượng ký tự 1 trong S. Chỉ số của các ký tự 1 trong S là ~1 ≤ c_1 < c_ 2 < ... <c_m ≤ L~. Tương tự, gọi các chỉ số của ký tự 1 trong <strong>T là ~d_1, d_2,...,d_m~. Với mỗi 1 ≤ i ≤ m, thêm một cạnh giữa các đỉnh ~c_i~ và ~d_i~ vào đồ thị G.

Đồ thị G thu được qua các bước trên là G(S,T) và dãy số nguyên A=~(a_1, a_2,...,a_n)~ có độ dài N.

Yêu cầu:

Tìm một cặp chuỗi tốt (S,T) thỏa mãn các điều kiện sau:

  • Gọi L là độ dài của S, với điều kiện N ≤ L ≤ ~10^5~.
  • Với mỗi cặp 1 ≤ i,j ≤ N, các đỉnh ij thuộc cùng một thành phần liên thông trong G(S,T) khi và chỉ khi ~a_i~ = ~a_j~.

Đầu vào:

Từ thiết bị chuẩn gồm

  • Dòng thứ nhất chứa số nguyên n (n < ~10^5~)
  • Dòng tiếp theo chứa n số nguyên ~a_1, a_2,…, a_n <n~</li>

Đầu ra:

Xuất ra thiết bị chuẩn gồm

  • Dòng thứ nhất chiều dài L
  • Dòng thứ 2 là Chuỗi S
  • Dòng thứ 3 là chuỗi T

Ví dụ

Input

3
1 2 1

Output

9
000001011
111000000

Comments

Please read the guidelines before commenting.



  • 0
    admin   commented on Nov. 1, 2024, 3:51 p.m.

    Bâì này có nhiều đáp án. Tuy cố gắng làm đúng với phần test