小普正在油漆行打工,今天他的任務是粉刷柵欄,柵欄由 $N$ 個寬度為一單位的柱子排成一列所組成,由左往右數來第 $i$ 根柱子的高度是 $a_i$ 單位。
由於小普是個細心的油漆工,而他的油漆刷寬度剛好也是一單位,他規定自己每次只能橫向粉刷一排柵欄或著垂直粉刷一根柵欄,而且單次粉刷過程中,油漆刷都不能離開柵欄表面。
舉例來說,假設組成柵欄的柱子高度依序為 2 2 1 2 1
,則其中一種粉刷方式為先橫向粉刷所有柵欄的第一層,再橫向粉刷第 $1$ 、 $2$ 根柵欄的第二層,最後在粉刷剩下的第 $4$ 根柵欄的第二層,總共需要 $3$ 次粉刷。
小普希望能在滿足規定的前提下盡早回家,聰明如你能幫小普算出最少需要幾次粉刷,才能將整個柵欄都粉刷過一遍呢?
輸入第一行為一個正整數 $N (1 \leq N \leq 100000)$,代表柵欄的寬度。
輸入第二行包含 $N$ 個用空白分隔的正整數 $a_i (1 \leq a_i \leq 10^ 9)$,代表由左往右數來第 $i$ 根柱子的高度。
輸出一個整數,代表最少需要幾次粉刷,才能將整個柵欄都粉刷過一遍。
Codeforces Round #256 (Div. 2) C. Painting Fence
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~2 | 範例測資 | 0 |
2 | 0~26 | 無額外限制 | 100 |