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

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

스택 복사 게임

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

요약
push와 pop, 복사로 만드는 최대 30만 개 영속 스택 버전을 관리하고 pop 값과 두 버전의 공통 원소 개수를 출력합니다.
난이도

보통10점 중 7점

유형
트리, 스택
정답자
아직 제출이 없습니다

문제

미르코가 스택을 가지고 놀고 있다. 게임을 시작할 때 미르코에게는 번호가 00인 빈 스택 하나만 있다. 게임의 ii번째 단계에서 미르코는 이미 만들어진 스택 하나를 골라 그 번호를 vv라 하고, 그 스택을 복사한 뒤 아래 세 가지 중 하나를 수행한다.

  1. 복사한 스택의 맨 위에 수 ii를 넣는다.
  2. 복사한 스택의 맨 위에 있는 수를 뺀다.
  3. 스택 하나를 더 골라 그 번호를 ww라 하고, 복사한 스택과 ww번 스택에 함께 들어 있는 서로 다른 수가 몇 개인지 센다.

새로 만든 스택의 번호는 ii가 된다.

미르코는 스택을 직접 다루기 싫어하므로, 이 과정을 대신 처리하는 프로그램을 작성하자. b 연산마다 스택에서 뺀 수를 출력하고, c 연산마다 조건을 만족하는 수의 개수를 출력한다.

입력

첫 줄에 미르코의 게임 단계 수 NN이 주어진다. (1≤N≤300 0001 \le N \le 300\,000)

게임의 각 단계는 시간 순서대로 11부터 NN까지의 번호로 구분한다.

다음 NN개의 줄 중 ii번째 줄에는 ii번째 단계의 내용이 아래 세 가지 형태 중 하나로 주어진다.

  • a 연산은 "a v"
  • b 연산은 "b v"
  • c 연산은 "c v w"

줄의 첫 글자는 연산의 종류를 나타내고, 그 뒤에 오는 한 개 또는 두 개의 수는 연산에 쓰이는 스택 번호이며 항상 [0,i−1][0, i-1] 구간의 정수이다.

b 연산에서 수를 빼는 스택은 비어 있지 않다.

출력

b 연산과 c 연산마다 구한 수를 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.

힌트

첫 번째 예제를 살펴보자. 처음에는 스택이 S0={}S_0 = \{\} 하나뿐이다. 1번째 단계에서 S0S_0을 복사하고 맨 위에 11을 넣어 S1={1}S_1 = \{1\}이 된다. 2번째 단계에서 S1S_1을 복사하고 맨 위에 22를 넣어 S2={1,2}S_2 = \{1, 2\}가 된다. 3번째 단계에서 S2S_2를 복사하고 22를 빼서 S3={1}S_3 = \{1\}이 된다. 4번째 단계에서 S2S_2를 복사해 S4S_4라 하고, S4S_4와 S3S_3에 함께 들어 있는 수를 세면 11뿐이므로 답은 11이다. 5번째 단계에서 S4S_4를 복사하고 22를 빼서 S5={1}S_5 = \{1\}이 된다.

예제7

  1. 예제 1

    입력
    5
    a 0
    a 1
    b 2
    c 2 3
    b 4
    
    예상 출력
    2
    1
    2
    
  2. 예제 2

    입력
    11
    a 0
    a 1
    a 2
    a 3
    a 2
    c 4 5
    a 5
    a 6
    c 8 7
    b 8
    b 8
    
    예상 출력
    2
    2
    8
    8
    
  3. 예제 3

    입력
    7
    a 0
    a 1
    a 2
    a 3
    a 4
    c 5 5
    c 5 0
    
    예상 출력
    5
    0
    
  4. 예제 4

    입력
    8
    a 0
    a 1
    a 0
    a 3
    c 2 4
    c 1 3
    c 4 2
    b 4
    
    예상 출력
    0
    0
    0
    4
    
  5. 예제 5

    입력
    6
    a 0
    a 1
    a 2
    b 3
    b 3
    b 3
    
    예상 출력
    3
    3
    3
    
  6. 예제 6

    입력
    7
    a 0
    a 1
    b 2
    b 3
    c 4 0
    c 4 2
    b 1
    
    예상 출력
    2
    1
    0
    0
    1
    
  7. 예제 7

    입력
    9
    a 0
    a 1
    c 2 1
    a 3
    b 4
    c 4 2
    b 4
    c 0 0
    a 6
    
    예상 출력
    1
    4
    2
    4
    0