trang chủ / bài tập / minternary

Xâu tam phân nhỏ nhất

Đề bài

Mô tả

Cho một xâu tam phân s, tức là xâu chỉ gồm các ký tự '0', '1' và '2'.

Bạn được phép thực hiện các phép biến đổi sau, mỗi phép áp dụng lên hai ký tự kề nhau, số lần tuỳ ý:

  • Đổi chỗ hai ký tự kề nhau '0' và '1' (thay "01" thành "10" hoặc ngược lại).
  • Đổi chỗ hai ký tự kề nhau '1' và '2' (thay "12" thành "21" hoặc ngược lại).

Lưu ý: không được đổi chỗ '0' và '2' kề nhau (không thay "02" thành "20" hay ngược lại), và không có phép biến đổi nào khác.

Hãy tìm xâu nhỏ nhất theo thứ tự từ điển có thể thu được sau một số lần biến đổi (có thể bằng 0).

Dữ liệu vào

Một dòng duy nhất chứa xâu s chỉ gồm các ký tự '0', '1', '2'.

Dữ liệu ra

In ra xâu nhỏ nhất theo thứ tự từ điển thu được.

Ràng buộc

  • 1|s|105

Ví dụ

Input Output Giải thích
100210 001120 Các ký tự '1' có thể di chuyển tự do qua '0' và '2', còn thứ tự tương đối giữa các ký tự '0' và '2' không đổi. Dãy '0'/'2' là 0020, hai ký tự '1' được chèn ngay trước ký tự '2' đầu tiên.
11222121 11112222 Xâu không có '0', nên mọi ký tự '1' được đưa hết về đầu xâu.
20 20 Không được đổi chỗ '2' và '0' kề nhau nên xâu giữ nguyên.

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