항공우주 및 기계공학

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

항공우주 엔지니어는 하늘을 나는 것을 만드는 일을 좋아합니다. 비행기, 로켓 등을 만들지요. 로켓을 만들어 발사했다면, 자연스럽게 이런 질문이 떠오릅니다. 이 로켓은 다시 떨어지기 전까지 얼마나 높이 올라갈까요?

다음과 같은 모델을 생각합니다. 로켓은 $n$개의 단(stage)으로 이루어져 있고, 각 단은 본질적으로 연료 탱크입니다. 한 단은 정해진 시간 동안 연소하며, 연료가 다 떨어지면 (빈 탱크는) 분리되어 버려집니다. 그래서 로켓은 단을 하나씩 떨궈 낼수록 점점 가벼워집니다. 마지막 단이 분리되고 나면 로켓은 더 이상 가속할 수 없습니다. 로켓의 본체 자체는 $M > 0$ 킬로그램(kg)의 무게를 가지며, 이는 모든 단을 떨궈 낸 뒤에 남는 무게입니다.

각 단 $i$에 대해 다음 세 값이 주어집니다.

  • 무게 $m_i \ge 0$ (kg),
  • 연소가 지속되는 시간 $t_i \ge 0$ (초, s),
  • 연소하는 동안 만들어 내는 일정한 추력(힘) $F_i \ge 0$ (단위는 kg·m/s², 여기서 m은 미터를 뜻합니다).

연료 자체의 무게는 없다고 가정합니다. 따라서 단 $i$가 연소하는 동안 전체 질량은 일정하며, 그 값은 $M$에 아직 분리되지 않은 모든 단(단 $i, i+1, \dots, n$)의 무게를 더한 것과 같습니다. 로켓은 수직 위로 곧게 발사되며, 바람·마찰·고도에 따른 중력 약화 등의 효과는 모두 무시합니다. 로켓은 높이 $0$에서 정지 상태(속도 $0$ m/s)로 시작하고, 각 단은 $1, 2, \dots, n$의 순서대로 사용되고 분리됩니다.

필요한 물리 공식은 다음과 같습니다.

  1. $a = F/m$ — 질량 $m$인 물체가 힘 $F$를 받으면 가속도는 $a = F/m$입니다.
  2. 지구 중력장에서 모든 물체는 일정한 $g = 9.81$ m/s²의 크기로 아래로 가속됩니다.
  3. 속도 $v$로 출발해 가속도 $a$로 움직이는 물체는 $t$초 동안 거리 $vt + \frac{1}{2}at^2$만큼 이동하고, 그 뒤의 속도는 $v + at$가 됩니다.

즉 단 $i$가 연소하는 동안 위쪽 방향의 알짜 가속도는 $a_i = F_i / \text{질량}_i - g$이며 $t_i$초 동안 적용됩니다. 연소가 끝나면 단 $i$가 분리되어 질량이 $m_i$만큼 줄어듭니다.

마지막 단이 떨어져 나가는 순간의 로켓 높이를 구하세요. 입력은 항상 로켓이 이륙하고, 마지막 단이 분리되기 전에 지면으로 추락하지 않도록 주어집니다.

입력

첫 번째 줄에는 파일에 담긴 데이터 집합의 개수 $K \ge 1$이 주어집니다. 그 뒤로 다음 형식의 데이터 집합이 $K$개 이어집니다.

  • 첫 줄에는 단의 개수 $n$ ($1 \le n \le 30$)과 로켓 본체의 무게 $M$이 주어집니다. $M$은 $0$보다 엄격히 큰 실수입니다.
  • 이어서 $n$개의 줄이 주어지며, 각 줄에는 한 단을 나타내는 음이 아닌 실수 세 개 $m_i\ t_i\ F_i$가 있습니다. 따라서 로켓의 초기 전체 무게는 $M + \sum_i m_i$입니다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 $x$는 데이터 집합의 번호이며 $1$부터 셉니다. 그런 다음 다음 줄에 마지막 단이 떨어져 나갔을 때 로켓이 있던 높이를 소수점 아래 정확히 두 자리로 반올림하여 출력합니다.