만드는 중입니다

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

공정한 강도

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

요약
각 k마다 k번째부터 n번째 집에서 돈의 t비율만큼 빼앗은 뒤 남은 금액의 최대와 최소 차이가 최소가 되는 t를 구하고, 그 차이가 같으면 더 많이 빼앗는 t를 고릅니다.
난이도

보통10점 중 5점

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

문제

로빈 후드는 부자에게서 훔려 가난한 사람에게 나눠 주는 것으로 유명하다. 하지만 지금 머무는 도시에는 부자만 살기 때문에 이번에는 일방적인 강도를 할 수밖에 없다. 이 도시에는 부자가 총 nn명 있고, 그들의 집은 큰길을 따라 한 줄로 늘어서 있다. ii번째 집에 사는 사람은 정확히 aia_i만큼의 돈을 가지고 있다.

로빈 후드에게는 여러 부하가 있으므로 미리 강도 계획을 세우려 한다. 계획은 정수 kk와 실수 tt로 표현되며, 번호가 k,k+1,…,nk, k+1, \ldots, n인 집을 털고 각 집에서 가진 돈의 tt 비율만큼을 정확히 훔친다는 뜻이다. 즉 계획을 실행한 뒤 사람들이 남게 되는 돈은 anew=[a1,a2,…,ak−1,(1−t)ak,(1−t)ak+1,…,(1−t)an]a^\mathrm{new} = [a_1, a_2, \ldots, a_{k-1}, (1-t)a_k, (1-t)a_{k+1}, \ldots, (1-t)a_n]이고, 훔친 돈의 총액은 b=t⋅(ak+ak+1+…+an)b = t\cdot(a_k+a_{k+1}+\ldots+a_n)이다.

강도 후의 불공정도를 max⁡(anew)−min⁡(anew)\max(a^\mathrm{new}) - \min(a^\mathrm{new}), 즉 강도 후 사람들이 가진 돈의 최댓값과 최솟값의 차이로 정의하자.

로빈 후드의 일당은 아직 도시에 도착하지 않았으므로 몇 채의 집을 성공적으로 털 수 있을지 모른다. 11부터 nn까지의 각 kk에 대해, 계획 (k,t)(k,t)로 강도한 뒤 불공정도를 최소로 만드는 00 이상 11 이하의 tt가 무엇인지 구해 주자. 고정된 kk에서 최소 불공정도를 달성하는 tt가 여러 개라면, 훔친 돈의 총액이 최대가 되는 계획을 골라야 한다.

입력

첫째 줄에 도시에 사는 사람 수 nn이 주어진다 (1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5).

둘째 줄에 각 도시민이 처음 가진 돈 aia_i가 공백으로 구분되어 nn개 주어진다 (1≤ai≤1091 \leq a_i \leq 10^9).

출력

nn개의 실수 tit_i를 출력한다 (0≤ti≤10 \leq t_i \leq 1). 각 1≤k≤n1 \leq k \leq n에 대해, (k,tk)(k,t_k)는 해당 kk를 가진 계획 중 강도 후 불공정도가 최소가 되는 계획이어야 하고, 그런 계획이 여러 개라면 훔친 돈의 총액이 최대가 되는 계획이어야 한다.

각 출력값과 정답의 절대 오차 또는 상대 오차가 10−910^{-9} 이하이면 정답으로 인정된다.

예제2

  1. 예제 1

    입력
    3
    1 4 2
    
    예상 출력
    1.00 0.75 0.50
    
  2. 예제 2

    입력
    3
    3 2 1
    
    예상 출력
    1.00 0.00 0.00