만드는 중입니다

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

전쟁 준비하기

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

요약
각 민족 군사 수가 정해져 있고 순서대로 배치해야 할 때, 서로 다른 민족이 가로로 인접한 쌍이 k 이하가 되도록 직사각형 X×Y를 만들고, k=0부터 N-1까지 가능한 Y의 최댓값을 구한다.
난이도

어려움10점 중 8점

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

문제

폴리매스 왕국은 이웃 나라 사이언스보드를 정복하려고 전쟁을 준비한다. 당신은 전쟁에 쓸 방진을 짜 달라는 부탁을 받고 방진을 연구하고 있다.

전쟁 지역의 지형을 고려하면 가장 효율적인 방진은 직사각형 구조다. 즉 XX행 YY열의 직사각형을 정확히 XYXY명의 병사가 채우는 형태다. 병사의 수가 정확히 맞지 않아 몇 명이 남거나 부족하면 이런 방진을 만들 수 없다.

폴리매스 문명은 예전부터 강한 군사력으로 주변의 약소국을 여럿 복속시켰기 때문에 군대에도 서로 다른 NN개의 민족이 섞여 있다. 이번 전쟁에 참가하는 병사 중 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가 클수록 군대가 강하다고 생각한다. 따라서 당신은 위 조건을 만족하는 방진 중 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인 모든 정수 kk에 대해 가능한 YY의 최댓값을 각각 공백으로 구분하여 출력한다.

제한

  • 1≤N≤1031 \le N \le 10^3
  • 1≤Ai≤1061 \le A_i \le 10^6
  • M≤106M \le 10^6 (단, M=A1+A2+⋯+ANM=A_1+A_2+\cdots+A_N)

예제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