S부터 t까지의 문자열 중 t의 롤링 해시값과 같은 문자열이 정확히 K개가 되는 첫 t를 찾아, 그 K개를 사전순으로 출력한다.
보통6해시맵수학구현아직 제출이 없습니다시간 제한0.5초메모리 제한128 MB브루노는 단어를 수로 바꾸려고 롤링 해시를 쓴다.
알고리즘은 이렇게 동작한다.
이반은 영어 소문자로만 이루어진 길이 N짜리 문자열을 사전순으로 모두 적은 목록을 구했다. 그런데 종이가 찢어져서 문자열 S로 시작해 zz...z로 끝나는 부분만 남았다.
이반은 남은 목록에서 해시가 같은 서로 다른 문자열 K개를 찾으려 한다. 브루노의 알고리즘을 망가뜨리려는 이반의 계획을 도와라.
첫째 줄에 문제에서 설명한 자연수 P, M이 주어진다. (1≤P,M≤100000)
둘째 줄에 목록에 있는 문자열의 길이 N이 주어진다. (1≤N≤100000)
셋째 줄에 남은 목록의 첫 문자열 S가 주어진다. 길이는 N이고 영어 소문자로만 이루어져 있다.
넷째 줄에 이반이 원하는 문자열의 개수 K가 주어진다. (1≤K≤20)
답은 다음 규칙으로 하나로 정한다. 남은 목록을 S부터 사전순으로 훑어보면서, 문자열 t까지 봤을 때 S부터 t까지 중 해시가 t와 같은 문자열이 처음으로 K개가 되면 거기서 멈춘다. 이때 해시가 t와 같은 그 K개를 사전순으로 한 줄에 하나씩 출력한다. 마지막 줄은 t가 된다.
목록 끝까지 가도 해시가 같은 문자열이 K개인 값이 없으면 NEMOGUCE 한 단어만 출력한다.