Simi의 물방울 원
면접 대비시간 제한1초메모리 제한1024 MB
목록에서 앞뒤 원과만 겹치는 원들이 덮는 전체 넓이를 시나리오마다 구합니다.
문제
Arup에게는 집에 계부의 딸 Simi가 있어서, Simi가 친구들과 수영할 때 그가 자주 돌보게 된다. Simi는 수영을 마치면 몸을 완전히 말리지 않은 채 집 안으로 뛰어 들어간다. 욕실로 서둘러 가는 동안 바닥에 물방울을 떨어뜨린다.
Arup의 아내 Anita는 Arup이 아이들을 제대로 살피지 않았고, 집에 들어오기 전에 몸을 말리게 하지 않았다며 그를 탓한다. Anita는 물 피해로 나무 바닥이 망가졌다고 말한다. 그러나 Arup은 나무 바닥이 전부 망가진 것은 아니라는 점을 안다. 그래서 물이 닿은 바닥 면적에 대해서만 책임지려 한다.
Simi가 집 안을 달리면 물방울은 바닥에 닿아 완전한 원을 이룬다. Simi는 충분히 빠르게 달리므로, 각 물방울은 바로 앞 물방울과만 겹칠 수 있고 다른 물방울과는 겹치지 않는다. 앞 물방울과 전혀 겹치지 않는 경우도 있다. 따라서 각 물방울은 바로 앞 물방울과 바로 뒤 물방울, 최대 두 개와만 겹칠 수 있다. 각 물방울(원)은 바닥의 일정한 면적을 덮는다. 어떤 원도 다른 원에 완전히 덮이지 않는다.
원의 목록이 주어진다. 목록의 각 원은 바로 앞 원과 바로 뒤 원하고만 겹칠 수 있다. 이때 모든 원이 덮는 전체 면적을 구하라.
입력
첫 줄에는 시나리오 개수를 나타내는 양의 정수 ()이 하나 주어진다. 이어서 각 시나리오가 주어진다.
각 시나리오의 첫 줄에는 그 시나리오의 물방울 개수 ()가 하나 주어진다. 이어지는 개의 줄에는 발생한 순서대로 물방울 정보가 한 줄에 하나씩 주어진다. 각 줄에는 한 칸 공백으로 구분된 실수 세 개가 정확히 주어진다. 각각 (), (), ()이며, 물방울 중심의 x, y 좌표(cm)와 반지름(cm)을 나타낸다.
출력
각 시나리오마다 먼저 Set #i: 를 출력한다. 여기서 는 1부터 시작하는 시나리오 번호이다. 그 뒤에 모든 물방울이 덮는 전체 면적(cm^2)을 소수점 아래 둘째 자리까지 반올림한 양의 실수로 출력한다. 예를 들어 실제 면적이 31.674 cm^2이면 31.67을, 31.675 cm^2이면 31.68을 출력한다.
각 시나리오의 출력 뒤에는 빈 줄을 하나 출력한다. 출력 형식은 예제 출력을 따른다.
힌트
프로그램에서 가 필요하면 3.1415926535898 값을 사용하라.