자동 완성

면접 대비

시간 제한1초메모리 제한1024 MB

요약
주어진 접두사로 시작하는 파일 중 중요도가 가장 높은 파일을 출력하고 그 중요도에 D를 더하는 질의를 순서대로 처리한다.
난이도

어려움10점 중 8점

유형
트라이, 힙, 구현
정답자
아직 제출이 없습니다

문제

경인이는 파일 검색 프로그램의 자동 완성 기능을 개발하고 있다. 당연하게도 경인이는 당신에게 구현을 맡겼다!

NN개의 파일은 이름을 나타내는 서로 다른 문자열 S_iS\_i와 중요도를 나타내는 정수 W_iW\_i로 표현된다. 이제 다음과 같은 QQ개의 사용자 입력을 순서대로 처리해야 한다.

  • TT DD: 문자열 TT로 자동 완성할 수 있는 파일 중 가장 중요도가 높은 것을 찾고 그 중요도에 정수 DD를 더한다. 즉, TT를 접두사로 갖는 S_iS\_i 중 W_iW\_i가 가장 높은 ii를 출력하고 그 W_iW\_i에 DD를 더한다. 만약 그러한 파일이 여러 개라면 ii가 가장 작은 파일을 선택한다. 조건을 만족하는 파일이 없다면 -1을 출력하고 아무것도 하지 않는다.

경인이를 도와 자동 완성 기능을 구현해 보자.

입력

첫 번째 줄에 파일의 개수 NN과 사용자 입력의 개수 QQ가 공백으로 구분되어 주어진다. (1≤N,Q≤200,000)(1 \le N, Q \le 200\\,000)

두 번째 줄부터 NN개의 줄에 걸쳐 ii번째 줄에 파일 ii의 이름인 문자열 S_iS\_i와 중요도인 정수 W_iW\_i가 공백으로 구분되어 주어진다. (1≤∑_i=1N∣S_i∣≤200,000;∣W_i∣≤108)\left(1 \le \sum\_{i=1}^N|S\_i| \le 200\\,000; |W\_i| \le 10^8 \right)

다음 줄부터 QQ개의 줄에 걸쳐 사용자 입력인 문자열 TT와 정수 DD가 공백으로 구분되어 주어진다. (1≤∑_j=1Q∣T_j∣≤200,000;∣D_j∣≤108)\left(1 \le \sum\_{j=1}^Q|T\_j| \le 200\\,000; |D\_j| \le 10^8\right)

주어지는 모든 문자열은 알파벳 대소문자로만 구성된다. 대소문자가 다른 알파벳은 다른 글자이다.

출력

각 사용자 입력의 결과를 QQ개의 줄에 걸쳐 출력한다.

예제1

  1. 예제 1

    입력
    3 3
    Happy 0
    Ham 2
    ham 9
    H -2
    Hope 4
    Ha 0
    
    예상 출력
    2
    -1
    1