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

Xem PDF

Điểm: 450 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

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