로켓
시간 제한1초메모리 제한1024 MB
각 로켓이 목표 높이 H에 도달하도록, 연료를 태우며 속도 floor(K/(M+T))-g로 상승할 때 필요한 최소 연료량을 구한다.
문제
중력이 평범한 곳과는 다르게 작동하는 행성 디스크레티그라비야(Diskretigravija) 의 주민들은 로켓의 효율을 개선하고 시험한다. 이들은 로켓 대를 만들었고, 각 로켓이 가능한 한 적은 연료로 정해진 높이에 도달하기를 원한다.
로켓은 다음과 같이 작동한다. 연료가 남아 있는 동안 로켓은 매초 연료 단위를 분사하며, 그때마다 수직 속도가
만큼 변한다. 여기서
- 는 그 로켓의 연료 성능,
- 은 (연료를 뺀) 로켓의 질량,
- 는 이번에 연료 단위를 분사한 직후 남은 연료의 양,
- 는 행성의 자유낙하 가속도,
- 는 의 정수 부분(내림)이다. 속도가 음수이면 로켓이 하강하는 것이다.
로켓은 매초 그 순간의 속도만큼 이동하므로, 높이는 매초 현재 속도만큼 변한다. 연료가 모두 떨어지면 속도는 매초 씩 감소한다. 로켓이 도달하는 높이란 비행 중 가장 높은 지점을 뜻한다.
예를 들어 , , 이고 로켓이 처음에 연료 단위를 가진 경우를 보자. 첫 번째 초가 시작될 때 로켓은 첫 연료 단위를 분사하고 정확히 초 동안 속도 로 상승한다. 그 뒤 속도는 만큼 늘어 초당 이 되고, 마지막 연료 단위를 소모하면 다시 만큼 늘어 초당 이 된다. 연료가 떨어진 뒤에는 속도가 매초 씩 줄어들므로, 로켓은 전부 합쳐 의 높이까지 올라간다.
각 로켓이 원하는 높이에 도달하는 데 필요한 최소 연료량을 구하자.
입력
첫째 줄에 두 정수, 로켓의 수 과 행성의 자유낙하 가속도 가 주어진다.
다음 개의 줄에는 각 로켓의 정보가 주어진다. 번째 줄에는 세 정수 , , 가 주어지며, 각각 번째 로켓의 연료 성능, 질량, 그리고 이 로켓이 도달해야 하는 높이를 뜻한다.
출력
개의 줄을 출력한다. 번째 줄에는 번째 로켓이 높이 이상에 도달할 수 있는 최소 연료량을 출력하고, 불가능하면 을 출력한다.