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

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

최대 부분 수열

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

요약
길이 16 이하인 수열을 재배열해 최대 연속 부분합을 가장 작게 만들고, 그 최솟값을 출력한다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

수열 a1...na_{1...n}에 대해 f(a)f(a)를 다음과 같이 정의한다.

f(a)=max⁡1≤l≤r≤n∑i=lrai.f(a) = \max\limits_{1 \le l \le r \le n} \sum\limits_{i = l}^{r} a_i\text{.}

수열 b1...nb_{1...n}이 주어질 때, b1...nb_{1...n}을 순열로 재배열하여 b1...n′b'_{1...n}을 만들고 f(b′)f(b')을 최소화하려고 한다.

입력

첫째 줄에 정수 nn이 주어진다. (1≤n≤161 \le n \le 16)

둘째 줄에 nn개의 정수 a1...na_{1...n}이 주어진다. (∣ai∣≤105|a_i| \le 10^5)

출력

가능한 f(b′)f(b')의 최솟값을 출력한다.

예제2

  1. 예제 1

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

    입력
    6
    4 -4 5 -20 6 7
    
    예상 출력
    9