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ự 0 và 1 đượ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:
- S và T có cùng số lượng ký tự 0.
- S và T có cùng số lượng ký tự 1.
- Độ dài của S và T 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:
- Gọi L là độ dài của S. Vẽ đồ thị G với các đỉnh từ 1 đến L.
- 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.
- 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 i và j 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
Bâì này có nhiều đáp án. Tuy cố gắng làm đúng với phần test