물류 작업 최적화

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

요약
각 시각 t에 대해 t를 포함하는 연속 구간의 합의 최댓값을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 분할 정복
정답자
아직 제출이 없습니다

문제

진흥이가 운영하는 물류 창고에서는 시각 11부터 NN까지의 시간 동안 물류가 들어오거나 나갑니다. 특정 시각 ii에서 순수 물류량은 들어온 물류량에서 나간 물류량을 뺀 값으로 정의되며, A_iA\_i로 표현됩니다. 이때 A_iA\_i의 절댓값은 10001000 이하입니다.

창고에서는 특정 시각에 업무를 처리하기 위해 아르바이트를 고용하려고 합니다. 아르바이트생이 일하는 동안 최대한 많은 물류를 처리할 수 있도록, 해당 시각 tt을 포함하는 연속된 시간 구간 \[l,r]\[l,r]을 적절히 선택하여 그 구간 내에서 처리하는 총 물류량 A_l+A_l+1+⋯+A_rA\_{l} + A\_{l+1} + \dots + A\_{r}을 최대로 만들려고 합니다. 이때, 선택된 구간에서 총 물류량이 음수일 수도 있음에 유의하세요.

아르바이트를 효율적으로 고용하기 위해, 각 시각 t=1,2,…,Nt = 1, 2, \dots, N에 대해, 그 시각을 포함하는 구간 중 총 물류량이 최대가 되는 값을 구하는 프로그램을 작성하세요.

입력

첫 번째 줄에 총 시간을 나타내는 정수 NN이 주어집니다.

두 번째 줄에 각 시각에 해당되는 순수 물류량을 의미하는 정수 A_1,A_2,…,A_NA\_{1}, A\_{2}, \dots, A\_{N}이 공백으로 구분되어 주어집니다.

출력

시각 t=1,2,…,Nt = 1, 2, \dots , N에 대해 각각, 해당 시각을 포함하는 구간 중 총 물류량이 최대가 되는 값을 공백으로 구분하여 출력하세요.

제한

  • 1≤N≤300 0001 \le N \le 300\ 000
  • 모든 ii에 대해, −1000≤A_i≤1000-1000 \le A\_{i} \le 1000

예제2

  1. 예제 1

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

    입력
    5
    1 2 3 4 5
    
    예상 출력
    15 15 15 15 15