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

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

케이크

면접 대비

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

요약
주어진 빵 조각 길이를 순서대로 연속한 구간으로 나누어 아래층부터 위층까지 쌓되, 각 층의 합이 바로 위 층의 합 이상이 되도록 할 때 만들 수 있는 층 수의 최댓값을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 누적 합, 이분 탐색
정답자
아직 제출이 없습니다

문제

친구들이 재민이의 생일을 축하하려고 생일 케이크를 만들고 있다.

케이크를 만들기 위해 높이가 11이고 길이가 각각 W1,W2,…,WNW_1, W_2, \dots, W_N인 빵조각을 11번부터 NN번까지 순서대로 굽는다. 이 빵조각들을 하나도 버리지 않고 모두 쌓아 층층이 케이크를 만들려고 한다.

케이크는 여러 층으로 이루어질 수 있다. 한 층의 길이는 그 층에 놓인 빵조각들의 길이의 합이다. 케이크가 무너지지 않으려면, 위층의 길이가 바로 아래층의 길이보다 클 수 없다.

또한 나중에 구운 빵조각은 먼저 구운 빵조각보다 낮은 층에 놓을 수 없다. 즉 각 층에는 번호가 연속된 빵조각들이 순서대로 놓이며, 아래층에서 위층으로 갈수록 빵조각의 번호가 커진다.

이 조건을 모두 지키면서 케이크를 가장 높이 쌓으려고 한다. 최대 몇 층까지 쌓을 수 있는가?

입력

첫째 줄에 빵조각의 개수 NN이 주어진다. (1≤N≤100 0001 \le N \le 100\,000)

다음 NN개의 줄에 걸쳐 각 빵조각의 길이 WiW_i가 한 줄에 하나씩 주어진다. (1≤Wi≤10 0001 \le W_i \le 10\,000)

출력

쌓을 수 있는 케이크의 최대 층수를 출력한다.

힌트

예를 들어 빵조각의 길이가 순서대로 1,2,31, 2, 3이면 다음과 같이 쌓을 수 있다.

+----------+
|    3     |
+---+------+
| 1 |   2  |
+---+------+

아래층은 11번과 22번 빵조각(길이의 합 33), 위층은 33번 빵조각(길이 33)으로 이루어져 두 층을 쌓을 수 있다.

예제1

  1. 예제 1

    입력
    3
    1
    2
    3
    
    예상 출력
    2