Bạn có một cơ sở dữ liệu ban đầu có chứa một thanh ghi là: "sun" và ta có hai phép thao tác trên dữ liệu như sau:
-
Thao tác \(1\) có dạng: \(+arg\) - Tức là ta thêm \(arg\) vào cơ sở dữ liệu.
-
Thao tác \(2\) có dạng: \(?arg\) - Tức là hỏi xem có bao nhiêu thanh ghi trong cơ sở dữ liệu bắt đầu bằng \(arg\)
(Trong đó \(arg\) là một xâu (chỉ gồm các chữ số hoặc latin thường) và có độ dài không quá \(20\) kí tự )
Yêu cầu:
-
Ứng với mỗi thao tác \(2\) ta in ra một block có dạng như sau:
-
Dòng thứ nhất là \(arg\)
-
Các dòng tiếp theo, in ra các thanh ghi bắt đầu bằng \(arg\) thoả mãn các điều kiện sau:
-
Mỗi thanh ghi phải cách đầu dòng \(2\) dấu cách
-
Các thanh ghi này phải theo thứ tự từ điển tử nhỏ đến lớn
-
Nếu có hơn \(20\) thanh ghi, thì ta chỉ in ra \(20\) cái đầu tiên (vẫn đảm bảo theo thứ tự từ điển từ bé đến lớn)
-
Các thanh ghi này phải khác nhau từng đôi một
Input
- Đầu vào sẽ có nhiều dòng (nhưng không quá \(10000\) dòng) - Mỗi dòng tương ứng với một thao tác
Output
- Ứng với mỗi thao tác \(2\), in ra đáp án cần tìm
Example
Test 1
Input
?s
+sunlight
?se
?s
Output
s
sun
se
s
sun
sunlight
Test 2
Input
sample
?e
+earth
+egg
?e
+eagle
+earth
?ea
Output
e
e
earth
egg
ea
eagle
earth
Bình luận
Anh jumptozero ơi, bài này còn thiếu test có số anh, do hôm trước em kiểm tra không kĩ.
anh vũ ra bài luôn rồi này :))