#518. 积木大赛(block)

积木大赛(block)

题目描述

春春幼儿园举办了一年一度的“积木大赛”,今年比赛的内容是搭建一座大厦。

搭建大厦的材料是一盒积木,包含 N 块,编号为 1 ~ N。每块积木的高度均为 1,底面是正方形,编号为 i 的积木底面边长为 LiL_i。参赛者必须按积木编号从小到大的顺序依次使用每块积木,而且必须用完所有积木。搭建大厦要从最下面即第一层开始,搭建完第一层再进入第二层,搭建完第二层再进入第三层,依次类推。在进入后一层的搭建后,不能再返回前一层。每一层使用多少块积木由参赛者决定,同一层内的积木平铺成一行,中间没有缝隙。为了保持大厦稳定,从第2层开始,每一层积木的总宽度不能超过前一层积木的总宽度。

每个小朋友都会分到一盒相同的积木。在满足以上条件的情况下,看谁搭建的大厦最高。

小 M 是个聪明的小朋友,她很快想出了建造大厦的最佳策略。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出大厦最高的高度。

输入格式

第一行:一个整数 NN

接下来 N 行,每行一个整数 LiL_i

输出格式

一个整数,表示可以搭建的最大高度。

样例输入

3
1
2
3

样例输出

2

数据规模

50% 的数据:1N20001 ≤ N ≤ 2000

100%的数据:1N105,1Li1041 ≤ N ≤ 10^5, 1 ≤ L_i ≤ 10^4