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

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

물리

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

요약
공들이 직선 위에서 속도에 비례한 가속도로 운동하고 탄성 충돌하며, 각 질의는 시각 t에서 k번째로 작은 속도를 묻는다.
난이도

어려움10점 중 8점

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

문제

매끄러운 수평 직선 트랙 위에 nn개의 공이 있다. 트랙은 수직선으로 생각할 수 있다. 공은 질량이 같은 입자로 생각할 수 있다.

처음에 공 ii는 위치 XiX_i에 있다. 초기 속도는 ViV_i이고 방향 Di=±1D_i = \pm 1로 움직인다.

또한 상수 CC가 주어진다. 임의의 순간에 공 ii의 가속도 AiA_i와 속도 ViV_i는 방향이 같고, Ai⋅Vi=CA_i \cdot V_i = C를 만족한다.

공이 여러 개이므로 움직이는 동안 서로 충돌할 수 있다. 모든 충돌은 완전 탄성 충돌이라고 가정한다.

여러 개의 질의가 주어진다. 각 질의는 두 정수 tt와 kk로 이루어진다. 시작한 지 정확히 tt초 후 모든 공의 속도 중 kk번째로 작은 값을 구해야 한다.

완전 탄성 충돌은 충돌에서 운동 에너지의 손실이 없는 충돌이다.

입력

첫째 줄에 두 정수 nn과 CC가 주어진다. (1≤n≤1051 \le n \le 10^5, 1≤C≤1091 \le C \le 10^9)

다음 nn개의 줄이 주어진다. 그중 ii번째 줄에는 세 정수 ViV_i, XiX_i, DiD_i가 주어진다. ViV_i는 공 ii의 초기 속도 (1≤Vi≤1051 \le V_i \le 10^5), XiX_i는 공 ii의 초기 위치 (1≤Xi≤1091 \le X_i \le 10^9), DiD_i는 공 ii가 움직이는 방향이다.

다음 줄에는 정수 1≤q≤1051 \le q \le 10^5가 주어지며, 이는 질의의 수이다. 그 뒤에 qq개의 줄이 주어진다. 각 줄에는 두 정수 1≤t≤1091 \le t \le 10^9와 1≤k≤n1 \le k \le n이 주어진다.

출력

각 질의마다 절대 오차가 10−310^{-3} 이하인 답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    3 7
    3 3 1
    3 10 -1
    2 7 1
    3
    2 3
    1 2
    3 3
    
    예상 출력
    6.083
    4.796
    7.141