항공우주 엔지니어는 하늘을 나는 것을 만드는 일을 좋아합니다. 비행기, 로켓 등을 만들지요. 로켓을 만들어 발사했다면, 자연스럽게 이런 질문이 떠오릅니다. 이 로켓은 다시 떨어지기 전까지 얼마나 높이 올라갈까요?
다음과 같은 모델을 생각합니다. 로켓은 $n$개의 단(stage)으로 이루어져 있고, 각 단은 본질적으로 연료 탱크입니다. 한 단은 정해진 시간 동안 연소하며, 연료가 다 떨어지면 (빈 탱크는) 분리되어 버려집니다. 그래서 로켓은 단을 하나씩 떨궈 낼수록 점점 가벼워집니다. 마지막 단이 분리되고 나면 로켓은 더 이상 가속할 수 없습니다. 로켓의 본체 자체는 $M > 0$ 킬로그램(kg)의 무게를 가지며, 이는 모든 단을 떨궈 낸 뒤에 남는 무게입니다.
각 단 $i$에 대해 다음 세 값이 주어집니다.
연료 자체의 무게는 없다고 가정합니다. 따라서 단 $i$가 연소하는 동안 전체 질량은 일정하며, 그 값은 $M$에 아직 분리되지 않은 모든 단(단 $i, i+1, \dots, n$)의 무게를 더한 것과 같습니다. 로켓은 수직 위로 곧게 발사되며, 바람·마찰·고도에 따른 중력 약화 등의 효과는 모두 무시합니다. 로켓은 높이 $0$에서 정지 상태(속도 $0$ m/s)로 시작하고, 각 단은 $1, 2, \dots, n$의 순서대로 사용되고 분리됩니다.
필요한 물리 공식은 다음과 같습니다.
즉 단 $i$가 연소하는 동안 위쪽 방향의 알짜 가속도는 $a_i = F_i / \text{질량}_i - g$이며 $t_i$초 동안 적용됩니다. 연소가 끝나면 단 $i$가 분리되어 질량이 $m_i$만큼 줄어듭니다.
마지막 단이 떨어져 나가는 순간의 로켓 높이를 구하세요. 입력은 항상 로켓이 이륙하고, 마지막 단이 분리되기 전에 지면으로 추락하지 않도록 주어집니다.
첫 번째 줄에는 파일에 담긴 데이터 집합의 개수 $K \ge 1$이 주어집니다. 그 뒤로 다음 형식의 데이터 집합이 $K$개 이어집니다.
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 $x$는 데이터 집합의 번호이며 $1$부터 셉니다. 그런 다음 다음 줄에 마지막 단이 떨어져 나갔을 때 로켓이 있던 높이를 소수점 아래 정확히 두 자리로 반올림하여 출력합니다.