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

Đổi tên hàng loạt

Đề bài

Mô tả

Một chương trình có n biến. Biến thứ i hiện có tên wi và cần được đổi thành tên wi. Với mỗi biến, độ dài tên hiện tại bằng độ dài tên đích: |wi|=|wi|.

IDE cung cấp đúng một lệnh "đổi tên hàng loạt". Để dùng lệnh này, bạn chọn hai xâu st, rồi lệnh được áp dụng cho tất cả các biến theo quy tắc sau: nếu tên biến chứa s như một xâu con thì lần xuất hiện đầu tiên (và chỉ lần đầu tiên) của s trong tên đó được thay bằng t; nếu tên biến không chứa s thì tên đó giữ nguyên.

Bạn phải thực hiện việc đổi tên cho tất cả các biến bằng đúng một lần gọi lệnh "đổi tên hàng loạt", tức là tồn tại một cặp (s,t) sao cho sau khi áp dụng quy tắc trên, mỗi biến i có tên biến thành đúng wi. Hãy tìm một cặp (s,t) như vậy hoặc khẳng định là không thể.

Dữ liệu đảm bảo có ít nhất một biến mà tên đích khác tên hiện tại.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • n dòng tiếp theo, dòng thứ i chứa xâu wi (tên hiện tại).
  • n dòng tiếp theo, dòng thứ i chứa xâu wi (tên đích).

Tất cả các xâu chỉ gồm chữ cái latin thường.

Dữ liệu ra

Nếu không thể đổi tên tất cả các biến bằng một lần gọi lệnh, in ra NO.

Ngược lại, in ra YES ở dòng đầu, sau đó hai dòng chứa lần lượt st (1|s|,|t|5000), là cặp xâu dùng cho việc thay thế. Cả st chỉ gồm chữ cái latin thường.

Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Ràng buộc

  • 1n3000
  • 1|wi|=|wi|3000

Ví dụ

Input Output Giải thích
3
bab
cac
cdc
bdb
cdc
cdc
YES
a
d
Chọn s= a, t= d. Biến 1: bab chứa a, thay lần đầu thành bdb. Biến 2: cac thành cdc. Biến 3: cdc không chứa a, giữ nguyên cdc.
2
you
shal
not
pass
NO Không có cặp (s,t) nào biến đồng thời you thành not và shal thành pass.
1
topforces
codecoder
YES
topforces
codecoder
Chỉ có một biến, thay toàn bộ tê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