Điểm:
1700 (p)
Thời gian:
1.0s
Bộ nhớ:
512M
Input:
bàn phím
Output:
màn hình
Hãy xem xét phép biến đổi xâu sau:
- Nối ký tự
#
vào xâu (giả định rằng#
có thứ tự từ điển nhỏ hơn so với tất cả các ký tự khác trong xâu). - Tạo tất cả các vòng quay của xâu.
- Sắp xếp các vòng quay theo thứ tự từ điển tăng dần.
- Dựa vào thứ tự này, hãy tạo một xâu mới có chứa ký tự cuối cùng của mỗi vòng quay.
Ví dụ, xâu babc
trở thành babc#
. Sau đó, danh sách các phép quay được sắp xếp là #babc
, abc#b
, babc#
, bc#ba
và c#bab
. Cuối cùng tạo được xâu cb#ab
.
Input
- Dòng đầu vào duy nhất chứa xâu đã biến đổi có độ dài \(n + 1\). Mỗi ký tự của xâu gốc là một trong những
a
-z
.
Output
- In ra xâu gốc có độ dài \(n\).
Constraints
- \(1 \leq n \leq 10^6\)
Example
Sample input
cb#ab
Sample output
babc
Bình luận
Xét những phép biến đổi xâu sau:
#
vào phía sau xâu (Xem kí tự#
có thứ tự từ điển nhỏ hơn tất cả các kí tự khác trong xâu).abc
thì tập các hoán vị vòng quanh của xâu \(S\) là {abc
,bca
,cab
}).Ví dụ, ta biến xâu
babc
thànhbabc#
. Sau đó, ta có tập các hoán vị vòng quanh của xâu theo thứ tự từ điển là: {#babc
,abc#b
,babc#
,bc#ba
, andc#bab
}. Rồi ta tạo ra xâu mớicb#ab
.Yêu cầu: Từ xâu đã qua biến đổi, hãy xây dựng lại và in ra xâu ban đầu.
Input
Output
Test 1
Input
Output