주조 (Casting)
시간 제한1초메모리 제한128 MB
볼록 다각형에서 두 꼭짓점을 잇는 직선이 다각형을 나눌 때, 두 조각 모두 평행이동으로 빼낼 수 있는 꼭짓점 쌍의 개수를 센다.
문제
주조(casting)는 만들려는 물체 모양의 빈 공간이 있는 거푸집(cast)에 액체를 부어 굳힌 뒤 거푸집을 떼어 내는 제조 공정이다. 같은 거푸집을 재사용하여 물체를 대량 생산하려면, 거푸집과 물체를 모두 손상하지 않고 거푸집을 물체에서 떼어 낼 수 있어야 한다.
물체가 볼록 다각형 일 때, 의 두 꼭짓점을 지나는 직선을 따라 거푸집을 두 조각으로 나눈다. 목표는, 두 조각을 각각 평행 이동만으로 (거푸집 조각과 물체를 모두 손상하지 않고) 떼어 낼 수 있게 하는 꼭짓점 쌍을 찾는 것이다. 예를 들어 원 문제의 그림에서는 어떤 두 꼭짓점을 지나는 직선으로 나누면 위쪽 조각은 위로, 아래쪽 조각은 아래로 빼낼 수 있지만, 다른 어떤 두 꼭짓점을 지나는 직선으로 나누면 한쪽 조각이 물체를 감싸 버려 어떤 방향으로도 떼어 낼 수 없다. 즉, 모든 꼭짓점 쌍이 이런 분할을 허용하지는 않는다. (각 조각은 서로 다른 평행 이동 방향으로 빼내도 되며, 나누는 직선에 수직인 방향으로만 빼낼 수 있어야 하는 것은 아니다.)
개의 꼭짓점을 가진 볼록 다각형 가 주어질 때, 를 지나는 직선으로 나눈 두 거푸집 조각을 모두 평행 이동으로 떼어 낼 수 있는 꼭짓점 쌍 를 모두 찾는 프로그램을 작성하라.
입력
입력은 표준 입력으로 주어진다. 첫 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스의 첫 줄에는 볼록 다각형 의 꼭짓점 수 이 주어지며 이다. 다음 줄에는 개의 정수 이 주어지는데, 와 는 각각 꼭짓점 의 좌표와 좌표이다. 모든 좌표는 정수이며 이다. 꼭짓점 은 의 경계를 따라 시계 방향으로 주어진다.
출력
출력은 표준 출력으로 한다. 각 테스트 케이스에 대해, 를 지나는 직선으로 나눈 두 거푸집 조각을 모두 평행 이동으로 떼어 낼 수 있는, 인 꼭짓점 쌍 의 개수를 한 줄에 출력한다.