Thao tác trên cơ sở dữ liệu

View as PDF

Points: 450 Time limit: 1.0s Memory limit: 256M Input: stdin Output: stdout

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

Comments

There are no comments at the moment.