만드는 중입니다

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

감소하는 성장률의 비극 2

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

요약
0.001cm 단위로 반올림된 N일치 일일 성장값이 주어질 때, 이를 설명하는 가장 큰 일정 성장률을 구하고 불가능하면 Impossible을 출력합니다.
난이도

어려움10점 중 8점

유형
기하, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

유림이는 자신의 성장률이 감소한다는 사실을 깨닫고 매우 슬펐다. 어느 날 키를 매우 정밀하게 측정해 주는 비싼 기계를 우연히 알게 되어 이를 구입했다. 이 기계는 키를 반올림하여 cm\mathrm{cm} 단위로 소수점 아래 셋째 자리까지 표시한다. 따라서 오차 범위는 0.5×10−3cm0.5\times10^{-3}\mathrm{cm}이다. 반올림할 때 정수 mm에 대해 (m+0.5)×10−3cm(m+0.5)\times10^{-3}\mathrm{cm} 꼴의 키는 (m+1)×10−3cm(m+1)\times10^{-3}\mathrm{cm}로 올림한다.

유림이는 그저께 기계를 구매했고, 그제와 어제 정오에 키를 측정했다. 기계의 정밀도 덕분에 키가 실제로 자란다는 것을 확인할 수 있었다. 그녀는 공책에 표를 그리고 전일 대비 성장을 기록하기로 했다. 어제 키가 그제보다 +0.006cm+0.006\mathrm{cm} 높았으므로, 그 값의 마지막 자리인 6을 어제 날짜 칸에 적었다.

그런데 오늘의 전일 대비 성장은 +0.007cm+0.007\mathrm{cm}로 어제보다 높았다. 유림이는 다음 칸에 7을 적고, 자신의 성장률이 감소하지 않는다고 반 친구들에게 자랑했다. 이 자랑은 전교 1등 동우의 귀에 들어갔고, 동우는 곧바로 허점을 찾아냈다.

“사흘 동안 유림이의 실제 키가 140.0008cm140.0008\mathrm{cm}, 140.0074cm140.0074\mathrm{cm}, 140.0138cm140.0138\mathrm{cm}였다고 가정해 보자. 그러면 실제 전일 대비 성장은 +0.0066cm+0.0066\mathrm{cm}에서 +0.0064cm+0.0064\mathrm{cm}로 감소한다. 그런데 기계는 이 키를 각각 140.001cm140.001\mathrm{cm}, 140.007cm140.007\mathrm{cm}, 140.014cm140.014\mathrm{cm}로 반올림하므로, 네가 기록한 전일 대비 성장과 일치하게 된다. 그럼에도 성장률이 감소하지 않는다고 확신할 수 있어?” 유림이는 말문이 막혔다. 문제는 기계의 반올림에 있었다. 하나의 전일 대비 성장 데이터는 여러 실제 성장으로 설명될 수 있는데, 유림이는 이를 충분히 고려하지 않고 섣불리 결론을 내렸던 것이다.

같은 날 저녁, 집에 도착한 유림이는 가만히 있을 수 없었다. 오는 길에도 친구들이 이 일을 놀려댔고, 이대로라면 흑역사로 회자되고 성장률이 감소하는 아이라는 별명이 붙을 것이 분명했다.

유림이는 전일 대비 성장 데이터와 이를 설명하는 실제 성장 사이의 관계를 자세히 살핀 뒤, 한동안 키를 꾸준히 측정해서 전일 대비 성장 데이터를 더 만들어 반박하기로 했다. 유림이의 전략 수립을 도와주자.

유림이는 연속한 NN일 동안 전일 대비 성장을 기록한 다음, 실제 전일 대비 성장 값이 매일 감소하는 실제 성장으로는 그 데이터를 설명할 수 없음을 보이려 했다. 하지만 주장에 반하는 실제 성장이 단 하나라도 존재하면 계획이 틀어지므로, 이 전략에는 의존할 수 없었다.

그래서 유림이는 “상수 성장률 성장”을 활용한 전략을 짰다. 상수 성장률 성장은 시간에 따라 키가 일정하게 증가하는 실제 성장 모형이다. 연속한 NN일 동안의 전일 대비 성장을 기록한 다음, 이를 잘 설명하는 상수 성장률 성장을 하나라도 제시할 수 있다면, 성장률이 감소하지 않을지도 모른다고 친구들을 설득할 수 있을 터였다.

연속한 NN일 간의 전일 대비 성장 데이터가 주어질 때, 이를 설명하는 상수 성장률 성장의 성장률(단위 시간당 키 증가량)을 구해 보자. 가능한 값이 여러 개라면 성장률이 높을수록 좋으니, 되도록 큰 값을 택하자.

입력

첫 번째 줄에 정수 N(1≤N≤100 000)N(1\leq N\leq 100\,000)이 주어진다.

두 번째 줄에 길이 NN인 정수 수열의 항들이 공백으로 구분되어 순서대로 주어진다. 각 항은 0 이상 10 미만의 정수이다.

출력

주어진 수열의 각 항 aa를 전일 대비 성장 +(0.001×a)cm+(0.001\times a)\mathrm{cm}로 해석하여 만든 데이터를 고려할 때, 이 데이터를 설명할 수 있는 모든 상수 성장률 성장에 대해 성장률 값들의 상한(supremum)을 출력한다. 즉, 가능한 모든 성장률 값보다 크거나 같은 최소의 실수를 출력한다. 성장률의 단위는 (10−3cm/10^{-3}\mathrm{cm}/일)이며, 출력에서는 생략한다.

정답과의 절대 또는 상대 오차는 10−610^{-6}까지 허용한다.

데이터를 설명하는 상수 성장률 성장이 존재하지 않으면 Impossible을 출력한다.

힌트

성장률이 증가하는 데이터라도 어떤 상수 성장률 성장으로도 설명되지 않는 경우에는 마찬가지로 Impossible을 출력해야 함에 유의하라.

예제3

  1. 예제 1

    입력
    8
    6 7 6 6 7 6 6 7
    
    예상 출력
    6.4
    
  2. 예제 2

    입력
    10
    5 4 5 5 5 4 5 5 4 5
    
    예상 출력
    4.75
    
  3. 예제 3

    입력
    12
    7 7 7 8 7 7 8 7 7 8 7 8
    
    예상 출력
    Impossible