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

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

탑 쌓기

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

요약
벽돌 너비 수열을 연속한 구간으로 나누어 아래층부터 위층으로 갈수록 구간 합이 커지지 않게 할 때, 만들 수 있는 층의 최대 개수를 구한다.
난이도

보통10점 중 7점

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

문제

바이트아저(Byteasar)는 벽돌 nn개를 사서 11번부터 nn번까지 번호를 매겼습니다. 모든 벽돌의 높이는 같지만 너비는 다를 수 있으며, ii번 벽돌의 너비는 wiw_i입니다.

바이트아저는 다음 규칙에 따라 모든 벽돌을 여러 층으로 쌓아 탑을 만들려고 합니다.

  • 각 층은 하나 이상의 벽돌로 이루어지며, 한 층의 너비는 그 층에 놓인 벽돌들의 너비 합입니다.
  • 맨 아래층에서 위로 올라가면서 볼 때, 각 층의 너비는 바로 아래 층의 너비보다 클 수 없습니다. 즉 층의 너비는 아래에서 위로 갈수록 증가하지 않습니다.
  • 벽돌은 번호 순서를 지켜야 합니다. 어떤 벽돌도 자신보다 번호가 큰 벽돌보다 더 높은 층에 놓일 수 없습니다. 다시 말해 각 층은 번호가 연속된 벽돌들의 묶음이며, 위로 올라갈수록 번호가 커집니다.
  • 모든 벽돌을 반드시 사용해야 합니다.

탑의 높이는 층의 개수입니다. 바이트아저가 쌓을 수 있는 탑의 최대 높이를 구하세요.

입력

첫째 줄에 벽돌의 개수 nn (1≤n≤100 0001 \le n \le 100\,000)이 주어집니다. 둘째 줄에 nn개의 정수 w1,w2,…,wnw_1, w_2, \ldots, w_n (1≤wi≤10 0001 \le w_i \le 10\,000)이 주어지며, wiw_i는 ii번 벽돌의 너비입니다.

출력

쌓을 수 있는 탑의 최대 높이를 정수 하나로 출력합니다.

힌트

너비가 각각 11, 22, 33인 벽돌 세 개를 생각해 봅시다. 11번과 22번 벽돌을 맨 아래층에 놓으면 그 층의 너비는 1+2=31 + 2 = 3이고, 33번 벽돌을 맨 위층에 놓으면 그 층의 너비는 33입니다. 33은 33을 넘지 않으므로 이 탑은 규칙을 만족하며, 높이는 22가 됩니다.

예제1

  1. 예제 1

    입력
    3
    1 2 3
    
    예상 출력
    2