Universal Cup Judging System

Universal Cup

Límite de tiempo: 4.0 s Límite de memoria: 1024 MB Puntuación total: 100
Estadísticas

정수 $n, m, k$와 $n$개의 정수 $a_i \in [1, m]$으로 이루어진 수열이 주어집니다. 여러분은 최대 한 번 수열에서 길이가 $k$인 구간(연속 부분수열)을 선택하여 평균화할 수 있습니다. 즉, 해당 구간의 원소들을 그 원소들의 산술 평균으로 대체할 수 있습니다. 이 과정은 $1$단위 시간이 걸리며, 구간의 각 원소는 일정한 속도로 균일하게 변합니다. 예를 들어 원소가 $(3, 9, 5, 1)$인 구간의 평균은 $\frac{3+9+5+1}{4} = 4\frac{1}{2}$이므로, 시간 $t = \frac{2}{3}$ 후에는 값들이 $(4, 6, 4\frac{2}{3}, 3\frac{1}{3})$이 되고, 시간 $t = 1$ 후에는 $(4\frac{1}{2}, 4\frac{1}{2}, 4\frac{1}{2}, 4\frac{1}{2})$가 됩니다. 엄밀하게는, 시간 $t \in [0, 1]$ 후 초기값이 $a$인 원소는 $a' = \bar{a} \cdot t + a \cdot (1 - t)$가 되며, 여기서 $\bar{a}$는 구간의 평균입니다. 선택된 구간에 속한 원소들만 변합니다.

$1$부터 $m$까지의 각 수 $x$에 대해 독립적으로, 어떤 구간을 평균화하는 과정을 수행하여 값 $x$가 수열의 어느 위치에든 얼마나 빨리 나타날 수 있는지 구해야 합니다. 얼마의 시간이 지난 후에 이것이 가능할까요? 만약 수 $x$를 얻는 것이 불가능하다면 -1을 출력하세요.

입력

첫 번째 줄에는 수열의 길이, 값의 상한, 그리고 변경할 구간의 길이를 각각 나타내는 세 정수 $n$, $m$, $k$ ($1 \le k \le n \le 300\,000$; $1 \le m \le 500\,000$)가 주어집니다.

두 번째 줄에는 $n$개의 정수 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le m$)이 주어집니다.

출력

$m$개의 줄을 출력합니다. $x$번째 줄에는 수 $x$를 얻는 데 필요한 최소 시간(실수)을 출력하거나, 최대 한 번의 평균화 연산으로 얻는 것이 불가능하다면 정수 -1(소수점 없이)을 출력합니다.

허용되는 절대 오차는 $10^{-9}$입니다. 소수점 아래 최대 $20$자리까지 출력할 수 있습니다.

예제

입력 1

8 10 4
3 9 5 1 1 1 1 10

출력 1

0.0000000000
0.2857142857
0.0000000000
0.3333333333
0.0000000000
0.5925925926
0.4000000000
0.2000000000
0.0000000000
0.0000000000

입력 2

1 3 1
2

출력 2

-1
0.0000000000
-1

노트

첫 번째 테스트에서는 길이가 $k = 4$인 구간 하나를 평균화할 수 있습니다. 정확한 결과는 $0, \frac{2}{7}, 0, \frac{1}{3}, 0, \frac{16}{27}, \frac{2}{5}, \frac{1}{5}, 0, 0$입니다.

수 $x = 6$은 마지막 네 수 $(1, 1, 1, 10)$을 평균 $\frac{13}{4} = 3\frac{1}{4}$로 평균화함으로써 시간 $t = \frac{16}{27} \approx 0.5926$에 가장 빨리 얻을 수 있습니다. 이때 마지막 원소는 $3\frac{1}{4} \cdot \frac{16}{27} + 10 \cdot \frac{11}{27} = 6$이 됩니다.

수 $x = 7$은 구간 $(9, 5, 1, 1)$을 평균 $4$로 평균화함으로써 시간 $t = \frac{2}{5}$에 가장 빨리 얻을 수 있습니다. 이때 이 원소들 중 첫 번째 원소는 $4 \cdot \frac{2}{5} + 9 \cdot \frac{3}{5} = 7$이 됩니다.

두 번째 테스트에서는 원소 하나를 평균화해도 값이 변하지 않습니다. $x = 2$에 대한 결과는 $t = 0$인 반면, 수 $1$과 $3$은 도달할 수 없습니다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.