만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Master of Both V

시간 제한5초메모리 제한2048 MB

요약
삽입과 삭제 후마다, 집합에 있는 모든 선분이 어떤 볼록 다각형의 변 위에 포함되는 다각형이 존재하는지 판별합니다.
난이도

어려움10점 중 10점

유형
기하, 세그먼트 트리, 정렬
정답자
아직 제출이 없습니다

문제

Prof. Chen은 자료구조와 계산 기하학의 대가이다. 최근 그는 Putata와 Budada에게 볼록 다각형의 정의를 가르쳤다. 볼록 다각형은 단순 다각형(즉, 두 꼭짓점이 겹치지 않고, 연속된 두 변이 꼭짓점에서 만나는 경우를 제외하면 두 변이 교차하지 않는 다각형)이며, 모든 내각이 π\pi보다 엄격히 작다.

Putata와 Budada는 볼록성 검사 문제를 풀었다. 이후 Prof. Chen은 그들에게 한 단계 더 나아가, 두 종류의 질의를 지원하는 선분 다중집합 SS를 관리하라고 요청했다.

  • ++ pxpx pypy qxqx qyqy: 끝점이 (px,py)(px,py), (qx,qy)(qx,qy)인 선분을 다중집합 SS에 넣는다.
  • −- ii: ii번째 질의에서 삽입한 선분을 SS에서 뺀다. 보장: ii번째 질의는 삽입 질의이고, 그 선분은 현재 다중집합에 들어 있다.

각 질의 후에, 꼭짓점이 반시계 방향 순서로 p0,p1,p2,…,pm−1p_0,p_1,p_2,\dots,p_{m-1}인 볼록 다각형 C\mathcal{C}가 존재하는지 답한다. 존재 조건은 SS의 모든 선분 u∈Su\in S에 대해, u⊆pjp(j+1) mod mu\subseteq p_jp_{(j+1)\bmod m}을 만족하는 j∈{0,1,…,m−1}j\in\{0,1,\dots,m-1\}가 있는 것이다. 두 선분 e,fe, f에 대해 e⊆fe\subseteq f는 ee의 모든 점 zz가 ff에도 속한다는 뜻이다.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤5⋅1051 \le t \le 5 \cdot 10^5)가 주어진다.

각 테스트 케이스의 첫 줄에는 질의의 수 nn (1≤n≤5⋅1051\le n\le 5\cdot 10^5)이 주어진다. 이어서 nn개의 줄에 질의가 하나씩 주어진다. 질의는 연산 문자 opop (op∈{+,−}op\in\{+,-\})로 시작한다.

op=+op=+이면 정수 px,py,qx,qypx, py, qx, qy (−109≤px,py,qx,qy≤109-10^9\le px,py,qx,qy\le 10^9) 네 개가 주어진다. px≠qxpx\neq qx 또는 py≠qypy \neq qy가 보장된다.

그렇지 않으면 정수 ii (1≤i≤n1\le i\le n)가 주어진다. ii번째 질의는 삽입 질의이며, 그 선분은 현재 다중집합에 들어 있음이 보장된다.

모든 테스트 케이스의 nn의 합은 5⋅1055\cdot 10^5을 넘지 않는다.

출력

각 테스트 케이스마다 '0'과 '1'로 이루어진 문자열을 한 줄에 출력한다. ii번째 문자는 ii번째 질의 후 답이 참이면 '1', 아니면 '0'이다.

예제1

  1. 예제 1

    입력
    4
    8
    + 0 0 1 0
    + 5 5 1 3
    + 2 0 2 1
    + 9 7 6 2
    + 1 2 2 2
    - 4
    + 0 1 0 2
    - 2
    5
    + 0 0 1 1
    + 0 1 1 2
    + 0 2 1 3
    - 2
    + 1 1 10 10
    4
    + 0 0 1 1
    + 0 0 1 0
    + 0 0 0 1
    - 1
    4
    + 0 0 1 1
    + 0 0 1 1
    - 1
    - 2
    
    예상 출력
    11000001
    11011
    1101
    1111