회색 영역

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

요약
히스토그램의 각 막대에 대해 정규화된 높이와 선형으로 감소하는 명암을 곱해 더한 뒤 고정값을 더해 필요한 잉크량을 계산하는 문제입니다.
난이도

쉬움10점 중 3점

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

문제

성공한 스타트업 "봉씨"의 데이터 분석가 이석원은 매일 전 세계 사용자에 대한 정보를 받아 시각화한다. 이때 자신이 직접 만든 시각화 도구를 사용한다.

아래 그림은 이석원의 도구로 만든 히스토그램이다.

Example histogram

이 예에서 구간 0-9는 5번, 10-19는 3번, 20-29와 30-39는 각각 한 번씩 나타났다.

이석원의 히스토그램 프로그램은 매우 간단하다. 먼저 히스토그램의 높이는 고정되어 있다. 즉 가장 높은 막대의 높이는 항상 일정하고, 나머지 막대의 높이는 그 막대와의 비율로 정해진다. 막대의 너비도 고정되어 있으므로 각 구간의 크기 또한 고정되어 있다(위 그림에서는 10이다).

마지막으로, 막대는 위치에 따라 음영이 정해진다. 가장 왼쪽 막대는 검은색(검은 정도 1), 가장 오른쪽 막대는 흰색(검은 정도 0)이며, 그 사이 막대는 왼쪽에서 오른쪽으로 갈수록 일정한 비율로 밝아진다. 예를 들어 위 그림에서 네 막대의 검은 정도는 1, 2/3, 1/3, 0이다.

히스토그램을 그리는 데 필요한 잉크의 양을 구하는 프로그램을 작성하라. 각 막대를 그리는 데 필요한 잉크의 양은 그 막대의 넓이와 검은 정도에 비례한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 값의 개수 nn과 구간의 크기 ww가 주어진다. 이어서 값들이 주어진다. 첫 번째 막대의 구간은 0≤v<w0 \le v < w, 두 번째 막대의 구간은 w≤v<2ww \le v < 2w이며, 나머지 막대도 같은 방식으로 정한다. 첫 번째 막대부터 가장 큰 값이 속한 막대까지는, 값이 하나도 없더라도 모두 그려야 한다. (1≤n≤1001 \le n \le 100, 10≤w≤5010 \le w \le 50, 0≤v≤1000 \le v \le 100.)

가장 큰 값은 ww보다 작지 않으므로, 히스토그램은 항상 두 개 이상의 막대를 가진다.

입력의 마지막 줄에는 00이 두 개 주어진다.

출력

각 테스트 케이스에 대해 히스토그램을 그리는 데 필요한 잉크의 양을 출력한다.

가장 높은 막대를 전부 검은색으로 칠하는 데는 잉크가 11만큼 필요하고, 축과 글자를 그리는 데는 0.010.01만큼 필요하다. 막대의 넓이는 높이에 비례하고 높이는 그 막대에 속한 값의 개수에 비례하므로, 각 막대는 (그 막대의 값의 개수를 가장 큰 값의 개수로 나눈 값)에 검은 정도를 곱한 만큼 잉크를 쓰고, 여기에 축과 글자를 위한 0.010.01을 더한다.

잉크의 양은 소수점 아래 정확히 여섯 자리로 반올림하여 출력한다(printf("%.6f")와 동일). 정답이 반올림 경곗값(중간값)에 놓이는 테스트 케이스는 없다.

예제1

  1. 예제 1

    입력
    3 50
    100
    0
    100
    3 50
    100
    100
    50
    10 10
    1
    2
    3
    4
    5
    16
    17
    18
    29
    30
    0 0
    
    예상 출력
    0.510000
    0.260000
    1.476667