Cho chuỗi s. Cặp (i, j) là 'tốt' nếu s_i = s_j, hoặc giữa chúng có vị trí k (i ≤ k < j) với s_k ≠ s_{k+1} và (s_k ≠ s_i hoặc s_{k+1} ≠ s_j). Sắp xếp lại s để số cặp tốt lớn nhất.
Test mẫu & giải thích
5 3 abc 5 edddf 6 turtle 8 pppppppp 10 codeforces
acb ddedf urtlet pppppppp codeforces
Test 1
Với s="abc" (n=3, ba ký tự đôi một khác nhau), đáp án "acb" chỉ đạt được 1 cặp tốt: cặp (1,3) tốt vì chọn k=1 có s_1='a'≠s_2='c' và s_2='c'≠s_3='b' nên thỏa pleasant-pair; còn (1,2) và (2,3) không thể tốt vì đoạn con quá ngắn khiến k luôn trùng lặp với s_i hoặc s_{k+1} trùng s_j. Vì 3 ký tự đôi một khác nhau nên đây là giới hạn trên không thể vượt qua với mọi hoán vị — 'bac' hay 'cab' cũng là đáp án hợp lệ khác, không riêng 'acb'.
Test 2
Với s="edddf" (n=5), sắp xếp lại thành "ddedf" cho 6 cặp tốt: (1,2) và (2,4) tốt trực tiếp vì cùng ký tự 'd'; (1,5),(2,5),(3,5) tốt nhờ vị trí k=3 vì s_3='e'≠s_4='d' và 'e' khác cả s_1/s_2='d'; đây là số cặp tốt tối đa có thể đạt được với đa tập ký tự {d,d,d,e,f}.