아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

AB

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

요약
두 문자열 집합 A, B를 관리하면서 find 질의마다 A의 접두사와 B의 접미사를 이어 붙여 주어진 문자열을 만드는 경우의 수를 센다.
난이도

보통10점 중 5점

유형
트라이, 문자열 매칭, 구현
정답자
아직 제출이 없습니다

문제

집합 A,BA, B와 문자열 SS에 대하여, 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • add A SS: AA에 SS를 추가한다.
  • delete A SS: AA에서 SS를 제거한다.
  • add B SS: BB에 SS를 추가한다.
  • delete B SS: BB에서 SS를 제거한다.
  • find SS: AA의 원소의 접두사와 BB의 원소의 접미사를 이어 붙여 SS가 되는 경우의 수를 출력한다. 원소가 다르거나 접두사(접미사)가 다르면 다른 경우로 센다. 빈 접두사(접미사)는 고려하지 않는다.

초기에 A,BA, B는 비어있으며, 이미 존재하는 원소를 추가하거나 존재하지 않는 원소를 제거하는 쿼리는 주어지지 않는다.

입력

첫째 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤1,000)\left(1\leq Q\leq 1\\,000\right)

둘째 줄부터 QQ개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. 쿼리에 등장하는 문자열은 영어 소문자로 이루어지며, 길이는 11 이상 1,0001\\,000 이하이다.

find 쿼리는 적어도 한 번 주어진다.

출력

find 쿼리의 답을 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    7
    add A aba
    add A a
    add A ab
    add B bab
    add B b
    add B ab
    find abab
    
    예상 출력
    10
    
  2. 예제 2

    입력
    8
    add A a
    add B bcd
    add A ab
    add B cd
    find abcd
    delete A a
    delete B bcd
    find abcd
    
    예상 출력
    4
    1