아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

로켓

시간 제한1초메모리 제한1024 MB

요약
각 로켓이 목표 높이 H에 도달하도록, 연료를 태우며 속도 floor(K/(M+T))-g로 상승할 때 필요한 최소 연료량을 구한다.
난이도

어려움10점 중 8점

유형
이분 탐색, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

중력이 평범한 곳과는 다르게 작동하는 행성 디스크레티그라비야(Diskretigravija) 의 주민들은 로켓의 효율을 개선하고 시험한다. 이들은 로켓 NN 대를 만들었고, 각 로켓이 가능한 한 적은 연료로 정해진 높이에 도달하기를 원한다.

로켓은 다음과 같이 작동한다. 연료가 남아 있는 동안 로켓은 매초 연료 11 단위를 분사하며, 그때마다 수직 속도가

⌊KM+T⌋−g\left\lfloor \frac{K}{M+T} \right\rfloor - g

만큼 변한다. 여기서

  • KK 는 그 로켓의 연료 성능,
  • MM 은 (연료를 뺀) 로켓의 질량,
  • TT 는 이번에 연료 11 단위를 분사한 직후 남은 연료의 양,
  • gg 는 행성의 자유낙하 가속도,
  • ⌊x⌋\lfloor x \rfloor 는 xx 의 정수 부분(내림)이다. 속도가 음수이면 로켓이 하강하는 것이다.

로켓은 매초 그 순간의 속도만큼 이동하므로, 높이는 매초 현재 속도만큼 변한다. 연료가 모두 떨어지면 속도는 매초 gg 씩 감소한다. 로켓이 도달하는 높이란 비행 중 가장 높은 지점을 뜻한다.

예를 들어 K=19K = 19, g=2g = 2, M=3M = 3 이고 로켓이 처음에 연료 33 단위를 가진 경우를 보자. 첫 번째 초가 시작될 때 로켓은 첫 연료 단위를 분사하고 정확히 11 초 동안 속도 ⌊193+2⌋−2=1\left\lfloor \frac{19}{3+2} \right\rfloor - 2 = 1 로 상승한다. 그 뒤 속도는 ⌊193+1⌋−2=2\left\lfloor \frac{19}{3+1} \right\rfloor - 2 = 2 만큼 늘어 초당 33 이 되고, 마지막 연료 단위를 소모하면 다시 ⌊193+0⌋−2=4\left\lfloor \frac{19}{3+0} \right\rfloor - 2 = 4 만큼 늘어 초당 77 이 된다. 연료가 떨어진 뒤에는 속도가 매초 22 씩 줄어들므로, 로켓은 전부 합쳐 1+3+7+5+3+1=201 + 3 + 7 + 5 + 3 + 1 = 20 의 높이까지 올라간다.

각 로켓이 원하는 높이에 도달하는 데 필요한 최소 연료량을 구하자.

입력

첫째 줄에 두 정수, 로켓의 수 NN 과 행성의 자유낙하 가속도 gg 가 주어진다.

다음 NN 개의 줄에는 각 로켓의 정보가 주어진다. i+1i+1 번째 줄에는 세 정수 KiK_i, MiM_i, HiH_i 가 주어지며, 각각 ii 번째 로켓의 연료 성능, 질량, 그리고 이 로켓이 도달해야 하는 높이를 뜻한다.

출력

NN 개의 줄을 출력한다. ii 번째 줄에는 ii 번째 로켓이 높이 HiH_i 이상에 도달할 수 있는 최소 연료량을 출력하고, 불가능하면 −1-1 을 출력한다.

제한

  • 1≤g1 \le g
  • 1≤Mi≤Ki≤1081 \le M_i \le K_i \le 10^8
  • 1≤Hi≤10181 \le H_i \le 10^{18}
  • 1≤N≤2001 \le N \le 200

예제4

  1. 예제 1

    입력
    2 2
    19 3 20
    19 3 28
    
    예상 출력
    3
    -1
    
  2. 예제 2

    입력
    1 2
    19 3 20
    
    예상 출력
    3
    
  3. 예제 3

    입력
    1 2
    19 3 27
    
    예상 출력
    4
    
  4. 예제 4

    입력
    3 1
    100 1 1
    5 5 1
    1000000 1 1
    
    예상 출력
    1
    -1
    1