만드는 중입니다

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

레몬 주스 게임

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

요약
각 k에 대해 구사과가 양 끝에서 레몬 k개를 미리 먹은 뒤, 두 사람이 최적으로 플레이할 때 남는 레몬 주스 양을 구합니다.
난이도

보통10점 중 7점

유형
게임 이론, 배열
정답자
아직 제출이 없습니다

문제

구사과와 큐브러버가 레몬 주스 게임을 하려고 한다.

레몬 주스 게임은 레몬 NN개를 일렬로 놓고 진행하는 게임이다. ii번째 레몬의 즙의 양은 AiA_i이다. 구사과는 레몬과 레몬 주스를 좋아하기 때문에 레몬 주스의 즙이 많은 것을 좋아하고, 큐브러버는 즙이 적은 것을 좋아한다.

오늘은 게임을 통해 주스로 만들 레몬을 정하려고 한다. 게임은 두 사람이 턴을 번갈아 가지며, 구사과가 먼저 시작한다. 각 턴에서 사람은 가장 앞이나 뒤에 있는 레몬을 하나 골라 먹는다. 레몬이 하나 남으면 게임이 끝나고, 이 레몬으로 레몬 주스를 만든다.

구사과는 레몬 주스의 즙의 양이 최대가 되도록 게임을 하고, 큐브러버는 즙의 양이 최소가 되도록 게임을 한다.

이번 게임에서 구사과는 큐브러버를 속이려고 한다. 게임을 시작하기 전에 구사과가 큐브러버를 잠시 화장실에 보내고, 그 사이에 구사과가 레몬 kk개를 미리 먹는다. 미리 먹는 레몬도 게임과 같은 방식으로 고른다. 즉, 큐브러버 없이 구사과가 kk번 턴을 먼저 진행하는 것과 같다.

각각의 kk (0≤k≤N−10 \le k \le N-1)에 대해, 두 사람이 최적의 방법으로 게임을 했을 때 레몬 주스를 만드는 레몬의 즙의 양을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 레몬의 개수 NN (1≤N≤300,0001 \le N \le 300{,}000)이 주어진다.

둘째 줄에는 레몬 즙의 양 A1,A2,…,ANA_1, A_2, \ldots, A_N (1≤Ai≤1,000,000,0001 \le A_i \le 1{,}000{,}000{,}000)이 주어진다.

출력

총 NN개의 정수 b0,b1,…,bN−1b_0, b_1, \ldots, b_{N-1}을 공백으로 구분해 출력한다. bib_i는 k=ik = i일 때, 주스로 만드는 레몬 즙의 양이다.

예제2

  1. 예제 1

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

    입력
    5
    1000000000 1000000000 1000000000 1000000000 1
    
    예상 출력
    1000000000 1000000000 1000000000 1000000000 1000000000