구 위의 두 위도/경도 점에 대해 대권 거리와, 위도를 유지한 뒤 경도를 유지하며 가는 두 구간 경로의 거리를 각각 계산한다.
보통5기하수학구현시뮬레이션면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB당신은 소형 항공사 SLPC 항공에서 일한다. 이 회사는 최근 비행 계획 프로그램에서 심각한 버그를 발견했다. 버그 때문에 비행기는 위도나 경도 중 하나를 일정하게 유지하는 경로로만 날아간다. 예를 들어 비행기를 (0,0)에서 (10,10)으로 보낼 때, 프로그램은 먼저 위도를 일정하게 유지하며 (0,0)에서 (0,10)으로 보내고, 이어서 경도를 일정하게 유지하며 (0,10)에서 (10,10)으로 보낸다.
이 버그로 회사가 얼마나 손해를 보았는지 알고 싶다. 그 첫 단계로 여러 도시의 위도와 경도 좌표를 가지고, 두 도시 사이의 가능한 가장 짧은 비행 거리와 버그가 있는 프로그램이 정한 비행 거리를 구하려 한다.
지구는 반지름이 6371 km인 완전한 구이고, SLPC 항공의 비행기는 지표면 바로 위(무시할 수 있는 높이)를 난다고 가정한다.
버그가 있는 프로그램은 항상 출발점의 위도를 유지하는 경로로 먼저 날아가 도착점의 경도에 이른 뒤, 그 경도를 유지하는 경로로 도착점까지 날아간다. 위도를 유지하는 구간은 위도선을 따라 두 경도 사이의 더 짧은 쪽으로 돈다. 두 경도의 차이가 정확히 180도이면 어느 쪽으로 돌아도 길이가 같다.
지표면 위 한 점의 위도는 적도면과, 지구 중심과 그 점을 잇는 직선이 이루는 각이다. 위도의 범위는 90∘S(남극)부터 90∘N(북극)까지이다.
지표면 위 한 점의 경도는 본초 자오선을 포함하는 평면과, 북극, 그 점, 남극을 포함하는 평면이 이루는 각이다. 자오선은 북극에서 남극까지 이어지는 대원의 절반이고, 본초 자오선은 경도를 0으로 정한 자오선이다. 경도의 범위는 180∘W부터 180∘E까지이다.
첫째 줄에 테스트 케이스의 수 T가 주어진다. (1≤T≤10000)
각 테스트 케이스는 한 줄로 이루어지며, 네 실수 a1,b1,a2,b2가 주어진다. (∣a1∣,∣a2∣≤90, ∣b1∣,∣b2∣≤180) 이 수들은 도 단위의 위도, 경도 좌표 쌍 (a1,b1)과 (a2,b2)를 나타낸다. (a1,b1)이 출발점, (a2,b2)가 도착점이다. 위도가 양수이면 적도의 북쪽, 음수이면 남쪽에 있는 점이다. 경도가 양수이면 본초 자오선의 동쪽, 음수이면 서쪽에 있는 점이다.
각 테스트 케이스마다 한 줄에 두 지점 사이의 가장 짧은 비행 거리와 버그가 있는 프로그램이 정한 비행 거리를 공백으로 구분해 출력한다. 거리의 단위는 km이고, 두 값 모두 소수점 아래 여덟째 자리까지 반올림해 정확히 소수점 아래 8자리로 출력한다. 거리가 0이면 0.00000000을 출력한다.
첫 번째 테스트 케이스에서는 버그가 있는 프로그램이 우연히 가장 좋은 경로를 고른다. 두 거리 모두 정확히 대원의 절반이다.
두 번째 테스트 케이스에서는 버그가 있는 프로그램이 가장 좋은 경로를 고르지 않으므로 두 값이 다르다.