아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

평화롭게 전쟁하기

시간 제한5초메모리 제한256 MB

요약
각 집단의 병사 수 A1..AN이 주어질 때, 행 우선 순서를 지키며 인접한 다른 집단 쌍이 k개 이하가 되도록 하는 가장 큰 직사각형 너비 Y를 k=0부터 N-1까지 각각 구한다.
난이도

어려움10점 중 9점

유형
수학, 정수론, 누적 합, 그리디
정답자
아직 제출이 없습니다

문제

폴리매스 문명은 기원전 8500년 경, 이웃 나라 사이언스보드를 복속시키기 위해 1차 동아전쟁이라 불리는 대규모 전쟁을 벌인 것으로 알려져 있다. 당신은 그 당시 폴리매스 문명의 육군 전술을 연구하고자 한다. 다행히도 고문헌에서 몇 가지 유용한 정보를 얻을 수 있었다.

그들의 전법서에 따르면 폴리매스 문명의 군대는 정확한 직사각형 모양의 방진으로 이루어져 있었다. 즉 XX행 YY열의 직사각형을 정확히 XYXY명의 병사가 채우고 있는 형태이다. 병사의 수가 정확히 떨어지지 않아 몇 명이 남거나 부족한 경우는 허용되지 않았다.

폴리매스 문명은 본래 강력한 군사력으로 주변의 약소국을 다수 복속시켰으므로 군대에도 서로 다른 NN개의 민족이 섞여 있었다. 특히 1차 동아전쟁에 참가한 병사들 중 ii번째 민족 출신인 병사는 정확히 AiA_i명이었다는 기록이 남아 있다.

폴리매스 문명에서는 출신 민족에 따라 시민을 차별대우했는데 군대도 이 영향을 받았다. 특히 i<ji<j일 때 ii번째 민족 출신인 병사는 항상 jj번째 민족 출신인 병사보다 앞에 서야 했다. 이 때 aa행 bb열에 위치한 병사가 a′a'행 b′b'열에 위치한 병사보다 앞에 선다는 말은 다음 둘 중 하나가 성립함을 의미한다.

  • a<a′a < a'
  • a=a′a=a'이고 b<b′b<b'

그러나 이 방식에는 약간의 문제가 있었는데, 서로 다른 민족인 병사끼리 양옆으로 인접해 있으면 항상 싸움이 벌어진다는 것이었다. 이 때 aa행 bb열에 위치한 병사와 a′a'행 b′b'열에 위치한 병사가 양옆으로 인접해 있다는 말은 a=a′a=a'이고 ∣b−b′∣=1|b-b'|=1임을 뜻한다.

폴리매스 문명의 육군 장교들은 싸움을 막기 위해 평화의 돌을 사용했다. 평화의 돌의 힘을 사용하면 서로 다른 민족인 병사가 인접해 있더라도 싸움이 나는 것을 막을 수 있지만, 한 개의 돌로는 하나의 싸움밖에 막을 수 없다. 즉 평화의 돌을 kk개 가지고 있다면 민족이 다르고 서로 인접한 병사의 쌍이 kk쌍 이하여야 싸움이 일어나지 않는다.

당신은 여러 기록을 통해 폴리매스 문명의 장교들이 방진이 옆으로 넓을수록, 즉 YY가 최대한 클수록 군대가 강하다고 생각했다는 사실을 밝혀냈다. 따라서 1차 동아전쟁에 사용된 방진 또한 완벽한 직사각형 모양이고 싸움이 일어나지 않는 형태의 방진 중 가장 큰 YY값을 가지는 방진일 것이라고 추측하고 있다. 그러나 폴리매스 문명이 정확히 몇 개의 평화의 돌을 가지고 있었는지는 아직 밝혀내지 못했기 때문에, 0≤k≤N−10 \le k \le N-1인 모든 정수 kk에 대해서 가능한 YY의 최댓값을 모두 구하기로 했다.

입력

첫 줄에 민족의 수 NN이 주어진다.

다음 줄에는 각 민족의 병사의 수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 주어진다.

출력

첫 줄에 0≤k≤N−10 \le k \le N-1에 대해 가능한 YY의 최댓값을 각각 공백으로 구분하여 출력한다.

제한

  • 1≤N≤1061 \le N \le 10^6
  • 1≤Ai≤10181 \le A_i \le 10^{18}
  • M≤1018M \le 10^{18} (단, M=∑i=1NAiM = \sum_{i=1}^N A_i)

예제2

  1. 예제 1

    입력
    5
    3 1 2 1 1
    
    예상 출력
    1 1 2 4 8
    
  2. 예제 2

    입력
    4
    6 2 14 14
    
    예상 출력
    2 2 6 36