서울과 학기-술 대학교

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

요약
각 학점 구간 질의마다 서로 다른 과목을 골라 얻을 수 있는 최대 학점 가중 평균 평점을 구한다.
난이도

어려움10점 중 8점

유형
수학, 그리디, 이분 탐색, 동적 계획법
정답자
아직 제출이 없습니다

문제

현재 공릉동에는 서울과학기술대학교가 위치해 있습니다. 하지만, 어떤 평행세계의 공릉동에는 "서울과 학기-술 대학교"가 있습니다.

"서울과 학기-술 대학교"에 재학 중인 대학생인 카프리는 현재 수강할 과목을 결정하는 데 어려움을 겪고 있습니다. 그도 그럴 것이, 서울과학기술대학교의 최대 평점은 4.54.5이지만, "서울과 학기-술 대학교"의 최대 평점은 10,000.010\\, 000.0입니다. 그래서 교수 또한 각 학생에게 00 이상 10,00010\\, 000 이하의 정수로 평점을 매깁니다.

각 과목은 1515 이하의 자연수인 학점 HH와 10,00010\\, 000 이하의 음이 아닌 정수인 예상 평점 PP를 가지고 있습니다. kk개의 과목을 수강하였을 때 각 과목의 학점이 h_1,h_2,⋯ ,h_kh\_1,h\_2,\cdots ,h\_k이고 평점이 p_1,p_2,⋯ ,p_kp\_1,p\_2,\cdots ,p\_k라면, 학기 최종 평점은 다음과 같습니다.

h_1p_1+h_2p_2+⋯+h_kp_kh_1+h_2+⋯+h_k\frac{{h\_1p\_1+h\_2p\_2+\cdots +h\_kp\_k}}{{h\_1+h\_2+\cdots +h\_k}}

카프리는 여러 가지 시나리오를 고려하여 이번 학기 시간표를 정하려고 합니다. 카프리가 고려할 시나리오의 종류는 다음과 같습니다.

  • l,,rl\\,\\, r: 이번 학기에는 모든 과목을 합쳐 총 ll학점 이상 rr학점 이하의 학점을 얻어야 합니다.

"서울과 학기-술 대학교"의 교칙에 따라 모든 재학생은 각 학기 최대 LL학점을 수강할 수 있습니다. 또한, 어떤 과목도 수강하지 않을 경우 제적될 수 있으므로, 모든 재학생은 각 학기 적어도 11학점 이상을 수강해야 합니다. 다시 말해, 각 시나리오에 대해 1≤l≤r≤L1\le l\le r\le L이 성립합니다.

카프리가 모든 과목에 대해 평점을 예상한 대로 정확하게 받을 수 있다고 가정할 때, 각 시나리오에 대해 카프리의 학기 최종 평점의 최댓값을 구해 주세요.

입력

첫 번째 줄에 수강할 수 있는 과목의 수 nn과 학점 제한 LL이 공백으로 구분되어 주어집니다. (1≤n≤1051\le n\le 10^5, 1≤L≤5⋅1051\le L\le 5\cdot 10^5)

두 번째 줄부터 nn개의 줄에 걸쳐 과목의 정보가 주어집니다.

nn개의 줄 각각에는 각 과목의 학점 H_iH\_i와 수강하였을 때의 평점 P_iP\_i가 공백으로 구분되어 주어집니다. (1≤H_i≤151\le H\_i\le 15, 0≤P_i≤10,0000\le P\_i\le 10\\, 000)

n+2n+2번째 줄에 시나리오의 개수 qq가 주어집니다. (1≤q≤1051\le q\le 10^5)

그다음 줄부터 qq개의 줄에 걸쳐 시나리오의 정보가 주어집니다.

qq개의 줄 각각에는 시나리오를 나타내는 두 정수 l_il\_i와 r_ir\_i가 공백으로 구분되어 주어집니다. (1≤l_i≤r_i≤L1\le l\_i\le r\_i\le L)

출력

주어진 시나리오 각각에 대해 카프리가 얻을 수 있는 학기 최종 평점의 최댓값을 새로운 줄에 출력합니다.

단, 총 학점이 l_il\_i학점 이상 r_ir\_i학점 이하가 되도록 수강 신청을 할 수 있는 방법이 없다면 00을 출력합니다.

모든 시나리오에 대해 정답과 출력한 값 간의 절대 오차 또는 상대 오차가 10−610^{-6} 이하인 경우 정답으로 인정됩니다.

예제1

  1. 예제 1

    입력
    3 13
    3 10
    4 15
    6 11
    7
    5 8
    6 6
    9 10
    11 13
    1 13
    5 5
    9 9
    
    예상 출력
    12.857142
    11.000000
    12.600000
    12.000000
    15.000000
    0.000000
    10.666666