시험 좌석 고르기

시간 제한3초메모리 제한128 MB

요약
각 데이터 세트에서 빈 좌석마다 앞쪽으로 보이는 학생들의 읽을 수 있는 실력 가중치 합을 구하고, 그중 최댓값을 소수 둘째 자리로 출력한다.
난이도

어려움10점 중 8점

유형
기하, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

시험에서는 어떤 자리에 앉느냐가 준비만큼이나 중요할 때가 있습니다. 다른 학생의 답안을 몰래 보고 싶다면, (1) 많은 학생의 답안을, 그것도 (2) 성적이 좋은 학생의 답안을 볼 수 있는 자리를 고르고 싶을 것입니다. 여기에는 분명한 상충 관계가 있습니다. 가까운 답안일수록 더 잘 보이지만, 다른 학생에게 시야가 완전히 가로막히기도 하므로 가장 좋은 자리를 찾는 것은 결코 쉬운 문제가 아닙니다.

모든 좌석은 d×dd \times d 격자의 정수 좌표 위에 있으며, (1,1)(1, 1)부터 (d,d)(d, d)까지 번호가 매겨집니다. 각 좌표 (x,y)(x, y)에는 실력 sx,y≥0s_{x,y} \ge 0 과 어깨너비 wx,y∈[0,1/2]w_{x,y} \in [0, 1/2] 를 가진 학생이 앉아 있습니다. 비어 있는 좌석은 sx,y=0s_{x,y} = 0, wx,y=0w_{x,y} = 0 으로 나타냅니다.

좌석 (x,y)(x, y) 에 앉으면 "앞쪽"만 볼 수 있습니다. 즉 y′<yy' < y 인 좌석 (x′,y′)(x', y') 의 답안만 볼 수 있습니다. 좌표 (x,y)(x, y) 의 학생은 (x−wx,y, y)(x - w_{x,y},\, y) 에서 (x+wx,y, y)(x + w_{x,y},\, y) 까지 이어지는 직선 선분으로 모형화되며, 어떤 학생의 선분도 뚫고 볼 수 없습니다. 모든 학생은 답안을 자신의 한가운데 (x,y)(x, y) 에 둡니다.

엄밀히 말하면, (x,y)(x, y) 에 앉아 있을 때 (x′,y′)(x', y') 의 답안을 볼 수 있으려면 y′<yy' < y 이고, (x,y)(x, y) 에서 (x′,y′)(x', y') 로 그은 직선이 (x′,y′)(x', y') 의 학생을 제외한 다른 어떤 학생도 지나가지 않아야 합니다. 직선이 어떤 학생 선분의 끝(가장자리)을 정확히 지나가는 경우에도 그 학생을 지나간 것으로 봅니다.

시력에는 한계가 있어 멀리 있는 답안일수록 알아보기 어렵습니다. 시력이 EE 이고 학생이 (유클리드) 거리 D>ED > E 에 있으면 아무것도 알아볼 수 없습니다. 거리 D≤ED \le E 이면 그 학생 답안의 1−D/E1 - D/E 만큼을 읽을 수 있습니다. 당신이 얻는 총이득은, 답안을 볼 수 있는 모든 학생에 대해 그들의 실력에 읽을 수 있는 비율을 곱한 값을 모두 더한 것입니다. 마지막으로, 당연히 비어 있는 좌석에만 앉을 수 있습니다.

입력

첫 줄에는 데이터 집합의 개수 K≥1K \ge 1 이 주어집니다. 이어서 KK 개의 데이터 집합이 다음 형식으로 주어집니다.

각 데이터 집합의 첫 줄에는 두 수, 곧 교실의 정수 크기 d≤100d \le 100 과 시력 E>0E > 0 (실수) 이 주어집니다.

그다음에는 d2d^2 개의 줄이 이어지며, d(y−1)+xd(y - 1) + x 번째 줄은 위치 (x,y)(x, y) 에 앉은 학생을 설명합니다. 각 줄에는 두 수 ss, ww, 곧 학생의 실력과 어깨너비가 주어집니다. 둘 다 음이 아닌 실수이며, 어깨너비는 최대 1/21/2 입니다. 각 데이터 집합에는 비어 있는 좌석이 적어도 하나 있음이 보장됩니다.

출력

각 데이터 집합마다 먼저 Data Set x: 를 한 줄에 출력합니다. 여기서 xx 는 데이터 집합의 번호입니다(1부터 시작). 그다음 줄에, 그 교실에서 가장 좋은 빈 좌석에 앉았을 때 얻을 수 있는 최대 총이득을 소수 둘째 자리까지 반올림하여 출력합니다.

예제3

  1. 예제 1

    입력
    1
    3 2.2
    0 0
    4 0.4
    2.1 0.2
    6.0 0.2
    0.2 0.1
    0.0 0.0
    10.5 0.5
    0.0 0.0
    0.0 0.0
    
    예상 출력
    Data Set 1:
    2.57
    
  2. 예제 2

    입력
    1
    2 2
    10 0.3
    4 0.1
    0 0
    0 0
    
    예상 출력
    Data Set 1:
    6.17
    
  3. 예제 3

    입력
    1
    2 5
    0 0
    9 0.2
    7 0.1
    8 0.3
    
    예상 출력
    Data Set 1:
    0.00