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

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

반평면 땅따먹기 2

시간 제한4초메모리 제한512 MB

요약
직선의 집합에 추가와 삭제가 번갈아 일어나는 가운데 주어진 x에서 최댓값을 온라인으로 답한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 분할 정복, 세그먼트 트리, 기하
정답자
아직 제출이 없습니다

문제

정수 쌍 (a,b)(a, b)를 담는 집합 SS가 있다. 처음에 SS는 공집합이다. 아래 세 종류의 연산이 nn개 주어진다.

  1. 정수 쌍 (a,b)(a, b)를 SS에 추가한다.
  2. ii번째 연산에서 추가한 정수 쌍을 SS에서 제거한다.
  3. 정수 xx가 주어지면, SS에 들어 있는 모든 정수 쌍 (a,b)(a, b) 중 ax+bax + b의 최댓값을 출력한다.

연산을 주어진 순서대로 처리하는 프로그램을 작성한다.

입력

첫째 줄에 연산의 개수 nn이 주어진다. (1≤n≤3000001 \le n \le 300000)

둘째 줄부터 nn개의 줄에 연산이 한 줄에 하나씩 주어진다. 각 줄은 연산의 종류를 나타내는 정수 Type으로 시작하고, Type은 1, 2, 3 중 하나이다.

Type이 1이면 정수 aa와 bb가 이어서 주어진다. (−109≤a,b≤109-10^9 \le a, b \le 10^9)

Type이 2이면 정수 ii가 이어서 주어진다. (1≤i≤n1 \le i \le n) ii는 이 연산의 번호보다 작고, ii번째 연산은 1번 연산이며, 그 연산으로 추가한 정수 쌍은 아직 제거되지 않았다.

Type이 3이면 정수 xx가 이어서 주어진다. (−109≤x≤109-10^9 \le x \le 10^9)

출력

3번 연산마다 답을 한 줄에 하나씩 순서대로 출력한다. 그 시점에 SS가 공집합이면 따옴표 없이 EMPTY를 출력한다.

예제4

  1. 예제 1

    입력
    7
    3 1
    1 2 3
    3 1
    1 -1 100
    3 1
    2 4
    3 1
    
    예상 출력
    EMPTY
    5
    99
    5
    
  2. 예제 2

    입력
    1
    3 0
    
    예상 출력
    EMPTY
    
  3. 예제 3

    입력
    6
    1 5 5
    2 1
    3 0
    1 -7 3
    2 4
    3 1000000000
    
    예상 출력
    EMPTY
    EMPTY
    
  4. 예제 4

    입력
    8
    1 1000000000 1000000000
    3 1000000000
    3 -1000000000
    1 -1000000000 -1000000000
    3 -1000000000
    2 1
    3 1000000000
    3 0
    
    예상 출력
    1000000001000000000
    -999999999000000000
    999999999000000000
    -1000000001000000000
    -1000000000