만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

시간과의 경쟁

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

요약
학생마다 집의 거리와 걷는 속도가 주어질 때, 차량이 태울 학생과 탑승 위치를 정해 마지막 학생이 가장 일찍 도착하도록 하는 방법을 구합니다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 수학
정답자
아직 제출이 없습니다

문제

린스크시에는 큰 도로가 하나뿐입니다. 학교도 학생들의 집도 모두 이 도로에 있습니다. 규율을 잘 지키는 학생들은 같은 시각에 집을 나섭니다. 하지만 집마다 학교와의 거리가 다르고, 학생마다 일정하지만 서로 다른 속도로 이동합니다. 걸음이 아주 느린 학생도 있고, 100미터 달리기 세계 챔피언이 될 마샤 가이카도 있습니다.

학교는 벨로모빌(веломобиль) 한 대를 사고, 수위가 그 차를 운전하기로 했습니다. 벨로모빌은 운전자 외에 학생을 한 명 더 태울 수 있습니다. 벨로모빌은 일정한 속도 vv로 움직입니다.

벨로모빌은 밤에 학교 차고에서 머뭅니다. 아침에 모든 학생이 집을 나서는 바로 그 순간, 차는 학생들을 향해 출발합니다. 아무도 길 한가운데서 내리고 싶어 하지 않으므로, 태운 학생은 반드시 학교 정문까지 데려다줘야 합니다. 벨로모빌이 한 학생을 학교에 먼저 데려다준 뒤에는, 다음으로 늦은 학생을 향해 다시 출발할 수 있습니다.

교장은 수업을 가능한 한 일찍 시작하고 싶어 하고, 그러려면 모든 학생이 학교에 도착해야 합니다. 마지막 학생이 학교에 도착하는 시간이 최소가 되도록, 벨로모빌 운전자가 따를 계획을 세우는 일을 도와주세요.

입력

첫 줄에 정수 nn과 vv가 주어집니다 (1≤n≤1051 \le n \le 10^5, 1≤v≤10001 \le v \le 1000). 다음 nn줄에는 각각 정수 xix_i와 viv_i가 주어집니다 (1≤xi,vi≤10001 \le x_i, v_i \le 1000). xix_i는 학교에서 학생 ii의 집까지의 거리이고, viv_i는 그 학생의 속력입니다.

출력

첫 줄에 모든 학생이 학교에 도착하는 데 걸리는 최소 시간 tt를 실수로 출력합니다. 둘째 줄에는 벨로모빌이 태워야 하는 학생 수 kk를 출력합니다. 이어서 kk줄에 학생 번호와, 그 학생이 벨로모빌에 타야 하는 학교로부터의 거리를 출력합니다.

예제1

  1. 예제 1

    입력
    5 4
    1 1
    4 2
    3 1
    7 5
    5 1
    
    예상 출력
    2.4
    2
    5 4
    3 0.8