작은 문자열 개수 세기
시간 제한2초메모리 제한512 MB
문자열 집합 D와 문자열 s가 주어집니다. s의 k번째 위치부터 끝까지를 한 문자로 바꾸는 갱신마다 D에서 s보다 사전순으로 작은 문자열의 개수를 구합니다.
문제
개의 문자열로 이루어진 집합 와 문자열 가 주어진다. 에 있는 문자열 중 사전순으로 보다 작은 문자열의 개수를 구하라.
문자열 는 번 수정된다. 각 수정은 정수 와 문자 의 쌍으로 주어진다. 수정 는 의 번째 문자부터 끝까지 모든 문자를 로 바꾼다.
예를 들어 초기 문자열이 anatoly이고 수정 , , 를 차례로 적용하면, 문자열은 anatoly → anatooo → anbbbbb → anbbbbx로 바뀐다.
각 수정 후에 현재 보다 사전순으로 작은 의 문자열 개수를 출력한다.
입력
첫 줄에 정수 과 가 주어진다 (). 둘째 줄에는 문자열 가 주어지며, 길이는 이하의 소문자 알파벳이다. 이어서 개의 줄에 의 문자열이 주어진다. 각 문자열은 소문자 알파벳으로 이루어지며, 에 있는 문자열 길이의 합은 을 넘지 않는다. 마지막으로 개의 줄에 수정이 주어진다. 각 줄에는 정수 와 소문자 알파벳 가 공백으로 구분되어 있다 ().
출력
첫 줄에 초기 문자열 보다 사전순으로 작은 의 문자열 개수를 출력한다. 이어서 개의 줄에 각 수정 후의 답을 한 줄씩 출력한다.
힌트
첫 번째 테스트에서 문자열은 anatoly → anatooo → anbbbbb → anbbbbx로 바뀐다.
초기 문자열 anatoly는 집합의 모든 문자열보다 작으므로 답은 이다. 첫 수정 후의 anatooo는 집합에 같은 문자열이 있지만 그보다 작지 않으므로 답은 여전히 이다. 두 번째 수정 후의 anbbbbb는 anatooo와 anba보다 크고 anbbbbu와 boris보다 작으므로 답은 이다. 마지막 수정 후의 anbbbbx는 anatooo, anba, anbbbbu보다 크므로 답은 이다.