SOJ ONLINE JUDGE

문제 146

다각형의 위치와 절단

내 상태
미제출
난이도
146번 문제 난이도 보기
Platinum IV
출제자
rlatjwls7882
시간 제한
4000 ms
메모리 제한
1024 MB
146번 문제 태그 보기
구현

$N$개의 꼭짓점이 둘레를 따라 순서대로 주어진 다각형과 볼록함을 보장하는지 나타내는 정수 $C$가 주어진다. $C=1$이면 다각형이 볼록하고, $C=0$이면 볼록함을 보장하지 않는다.

다음 $Q$개의 질의를 처리해 보자.

  • $\texttt{P}\ x\ y$: 점 $(x,y)$가 다각형의 내부, 경계, 외부 중 어디에 있는지 판별한다.
  • $\texttt{G}$: 다각형의 면적 중심을 구한다.
  • $\texttt{C}\ a_x\ a_y\ b_x\ b_y$: $A=(a_x,a_y)$에서 $B=(b_x,b_y)$로 향하는 직선의 왼쪽 닫힌 반평면과 다각형의 교집합의 넓이 및 면적 중심을 구한다.

면적 중심은 질량이 균일하게 분포한다고 가정했을 때의 무게중심이다. 빈 도형, 점, 선분에는 면적 중심이 없다. 각 질의는 처음 다각형을 기준으로 독립적으로 처리한다.

입력

첫 번째 줄에 정수 $N$, $Q$, $C$가 공백으로 구분되어 주어진다. $(0\le N\le2\,000; 1\le Q\le2\,000; C\in\{0,1\})$

두 번째 줄부터 $N$개의 줄에 걸쳐 각 꼭짓점의 정수 좌표 $x$, $y$가 공백으로 구분되어 주어진다. $(\lvert x\rvert\le10^6; \lvert y\rvert\le10^6)$ 꼭짓점은 모두 서로 다르며, 마지막에 첫 번째 꼭짓점을 중복해서 주지 않는다. 시계 방향과 반시계 방향 모두 가능하다. $N\ge3$이면 넓이가 양수인 단순다각형이다.

그다음 줄부터 $Q$개의 줄에 걸쳐 질의가 다음 형식 중 하나로 주어진다.

  • 문자 P와 정수 $x$, $y$가 공백으로 구분되어 주어진다. $(\lvert x\rvert\le10^6; \lvert y\rvert\le10^6)$
  • 문자 G가 주어진다.
  • 문자 C와 정수 $a_x$, $a_y$, $b_x$, $b_y$가 공백으로 구분되어 주어진다. $(-10^6\le a_x,a_y,b_x,b_y\le10^6)$

절단 질의는 $C=1$이고 $A\ne B$일 때만 주어진다.

출력

P 질의는 점이 다각형의 밖에 있으면 $-1$을, 경계에 있으면 $0$을, 안에 있으면 $1$을 한 줄에 출력한다.

G 질의는 면적 중심이 없으면 $0$을 한 줄에 출력한다. 면적 중심이 있으면 $1$과 중심의 좌표 $x$, $y$를 공백으로 구분하여 한 줄에 출력한다.

C 질의는 절단 결과의 넓이를 먼저 출력한 뒤, 같은 줄에 G 질의와 같은 형식으로 면적 중심을 공백으로 구분하여 출력한다.

각 실수는 절대 오차가 $10^{-6}$ 이하이거나 상대 오차가 $10^{-8}$ 이하이면 정답으로 인정한다.

예제 입력 1

4 6 1
0 0
4 0
4 4
0 4
P 2 2
P 4 1
P 5 2
G
C 2 -1 2 5
C 0 0 0 1

예제 출력 1

1
0
-1
1 2.000000000000 2.000000000000
8.000000000000 1 1.000000000000 2.000000000000
0.000000000000 0

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.