Biến đổi xâu

Đề bài

Mô tả

Cho hai xâu st, cùng có độ dài n và chỉ gồm các chữ cái Latin thường. Các vị trí trong xâu được đánh số từ 1 đến n.

Bạn được phép thực hiện thao tác sau bao nhiêu lần tùy ý (có thể là không lần nào):

  • Chọn một chỉ số i với 1in1 rồi đổi chỗ hai ký tự liền kề sisi+1.

Xâu t luôn giữ nguyên, các thao tác chỉ tác động lên s và được thực hiện lần lượt.

Nhiệm vụ của bạn là biến s thành t bằng không quá 104 thao tác. Bạn không cần tối thiểu hóa số thao tác, chỉ cần đưa ra một dãy thao tác hợp lệ có độ dài không vượt quá 104.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài của st.
  • Dòng thứ hai chứa xâu s gồm n chữ cái Latin thường.
  • Dòng thứ ba chứa xâu t gồm n chữ cái Latin thường.

Dữ liệu ra

Nếu không thể biến s thành t, in ra 1.

Ngược lại, dòng đầu in ra một số nguyên k (0k104) là số thao tác. Dòng thứ hai in ra k số nguyên c1,c2,,ck (1cj<n), trong đó cj nghĩa là ở thao tác thứ j ta đổi chỗ scjscj+1.

Nếu k=0 thì dòng thứ hai có thể để trống hoặc không in ra.

Có thể có nhiều đáp án hợp lệ, in ra đáp án bất kỳ.

Ràng buộc

  • 1n50
  • st chỉ gồm các chữ cái Latin thường.

Ví dụ

Input Output Giải thích
6
abcdef
abdfec
4
3 5 4 5
Xâu s biến đổi như sau: abcdef → abdcef → abdcfe → abdfce → abdfec. Đáp án khác cũng được chấp nhận nếu hợp lệ.
4
abcd
accd
-1 s có một ký tự b còn t không có, phép đổi chỗ không làm thay đổi tập ký tự nên không thể biến s thành t.
2
ab
ba
1
1
Một thao tác đổi chỗ s1s2 là đủ.

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