영역 분할
시간 제한8초메모리 제한512 MB
정사각형을 자르는 직선들이 주어질 때, 정사각형이 몇 개의 영역으로 나뉘는지 센다.
문제
Mr. Yamada Springfield Tanaka는 국가구획정리사업국 국장보좌대리라는 중책을 맡고 있다. 현재 그의 나라는 대규모 구획 정리 작업을 진행 중이며, 이 작업을 순조롭게 끝내면 그의 승진은 확실하다고 한다.
그런데 그의 출세를 못마땅하게 여기는 사람도 많다. 그중 한 명이 Mr. Sato Seabreeze Suzuki다. 그는 기회 있을 때마다 Mr. Yamada의 발목을 잡으려고 꾸며 왔다. 이번에도 Mr. Sato는 발목을 잡기 위해 실제 구획 정리를 담당하는 조직에 압력을 넣어, 구획 정리 결과를 아주 알아보기 어렵게 만들어 버렸다.
그래서 Mr. Yamada가 받은 결과에는 어떤 정사각형 토지를 어느 직선으로 분할했는지에 대한 정보만 남아 있었다. 최소한 그 정사각형 토지가 몇 개로 분할되었는지조차 알아내지 못하면, Mr. Yamada는 승진은커녕 해고될 것이 확실하다.
당신의 일은 (-100,-100), (100,-100), (100,100), (-100,100)을 꼭짓점으로 하는 정사각형 영역이 주어진 n개의 직선에 의해 몇 개로 분할되는지 조사하는 프로그램을 작성해서 Mr. Yamada를 해고 위기에서 구하는 것이다.
입력
입력은 여러 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫째 줄에는 직선의 수를 나타내는 정수 n이 주어진다 (1 ≤ n ≤ 100). 그다음 n개 줄에는 각각 4개의 정수 x1, y1, x2, y2가 포함된다. 이 정수들은 직선 위의 서로 다른 두 점 (x1, y1)과 (x2, y2)를 나타낸다. 주어지는 두 점은 항상 정사각형의 변 위의 점임이 보장된다. 주어지는 n개의 직선은 서로 다르며, 직선끼리 겹치지 않는다. 또한 직선이 정사각형의 변과 겹치지도 않는다.
입력의 끝은 n = 0으로 나타낸다.
출력
각 테스트 케이스에 대해 n개의 직선으로 분할된 영역의 수를 한 줄에 출력한다.
거리가 10-10 미만인 두 점은 일치하는 것으로 간주해도 된다. 또한 |PQ| < 10-10, |QR| < 10-10이고 |PR| >= 10-10인 교점의 쌍 P, Q, R은 존재하지 않는다.