Chọn ĐTQG Huế 2026 - Gợi ý lệnh

Xem dạng PDF

Gửi bài giải

Điểm: 30,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Trong các môi trường lập trình hiện nay, hệ thống thường hỗ trợ chức năng tự động gợi ý lệnh khi người dùng nhập một số ký tự đầu tiên. Mỗi lệnh có một độ phổ biến, thể hiện mức độ thường xuyên được sử dụng.

Hệ thống quản lý một từ điển gồm các lệnh. Mỗi lệnh là một xâu chỉ gồm các chữ cái Latin thường (a - z) và có độ phổ biến là một số nguyên dương.

Ban đầu, từ điển rỗng. Hệ thống thực hiện lần lượt ~q~ thao tác thuộc một trong hai loại:

  • ~1\ s\ x~: thêm lệnh ~s~ vào từ điển với độ phổ biến ~x~.

  • ~2\ p~: người dùng nhập xâu ~p~, hệ thống cần tìm lệnh phù hợp để gợi ý.

Với một thao tác loại ~2~ có xâu ~p~, hệ thống đưa ra từ gợi ý theo nguyên tắc sau:

  • Trong số những lệnh đang có trong từ điển mà nhận ~p~ làm tiền tố, hệ thống gợi ý lệnh có độ phổ biến lớn nhất.

  • Nếu có nhiều lệnh cùng đạt độ phổ biến lớn nhất, hệ thống gợi ý lệnh nhỏ nhất trong số chúng theo thứ tự từ điển.

  • Nếu không có lệnh nào nhận ~p~ làm tiền tố, trả lời là -1.

Xâu ~p~ được gọi là tiền tố của xâu ~s~ nếu nó là phần đầu của xâu ~s~. Một xâu cũng là tiền tố của chính nó.

Xâu ~a~ được gọi là nhỏ hơn xâu ~b~ theo thứ tự từ điển nếu hoặc tại vị trí đầu tiên hai xâu khác nhau thì ký tự của ~a~ có mã ASCII nhỏ hơn ký tự của ~b~, hoặc ~a~ là tiền tố thực sự của ~b~. Ví dụ: card < cat, app < apple, ~\dots~

Yêu cầu: Với mỗi thao tác loại ~2~, hãy đưa ra lệnh được hệ thống gợi ý hoặc -1 nếu không tồn tại lệnh phù hợp.

Input

  • Dòng đầu tiên chứa số nguyên ~q~ ~(1 \le q \le 220000)~.

  • ~q~ dòng tiếp theo, mỗi dòng mô tả một thao tác có dạng ~1\ s\ x~ hoặc ~2\ p~ (~1 \le x \le 10^9, 1 \le |s|, |p| \le 200~, trong đó ~|s|, |p|~ lần lượt là độ dài của xâu ~s, p~).

  • Số thao tác loại ~1~ không vượt quá ~200000~.

  • Số thao tác loại ~2~ không vượt quá ~20000~ và dữ liệu vào chắc chắn có ít nhất một thao tác loại ~2~.

  • Mọi xâu trong dữ liệu vào, cả xâu ~s~ của thao tác ~1~ lẫn xâu ~p~ của thao tác ~2~, không rỗng và chỉ gồm các chữ cái Latin thường từ a đến z.

  • Tổng độ dài của tất cả các xâu xuất hiện trong dữ liệu vào, tính cả xâu của thao tác loại ~1~ lẫn xâu của thao tác loại ~2~, không vượt quá ~500000~.

  • Các từ khoá được thêm vào bởi các thao tác loại ~1~ đôi một khác nhau và không có thao tác xoá từ khoá khỏi từ điển.

Output

Với mỗi thao tác loại ~2~, theo thứ tự xuất hiện, in ra trên một dòng lệnh được hệ thống gợi ý hoặc -1 nếu tại thời điểm đó không có lệnh nào như vậy.

Scoring

Subtask Điểm Ràng buộc
1 ~20\%~ ~q \le 100; \lvert s\rvert, \lvert p\rvert \le 20~.
2 ~20\%~ Với mọi xâu ~p~ của thao tác loại ~2~ đều có độ dài đúng bằng ~1~.
3 ~30\%~ Với tổng độ dài tất cả các xâu không vượt quá ~100000~ và mọi xâu đều có độ dài không vượt quá ~50~.
4 ~30\%~ Không có ràng buộc gì thêm.

Sample Input 1

7
1 cout 10
1 count 25
2 co
1 cin 30
2 ro
1 continue 15
2 con

Sample Output 1

count
-1
continue

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.