V11WATER - Nước đọng

Tags: dp

Problem

https://vn.spoj.com/problems/V11WATER

https://oj.vnoi.info/problem/V11WATER

Năm 2011, tình trạng ngập lụt trong thành phố trở lên nghiêm trọng hơn. Vì vậy, mọi người quyết định xây dựng hệ thống mái che cho toàn thành phố.

Mái che có bề rộng là N, được chia làm N phần có độ dài như nhau. Độ cao của mỗi phần là h1, h2, …, hn. Khi trời mưa, một phần nước sẽ đọng lại trên mái và một phần sẽ thoát ra ngoài theo hai bên trái và phải của mái che. Do đó, thành phố sẽ không phải chịu cảnh mưa lụt như trước.

Nhằm mục đích bảo trì mái che, bạn cần viết chương trình tính lượng nước lớn nhất có thể đọng lại trên mái che.

Input

  • Dòng đầu ghi số N. (1 <= N <= 100000)
  • Dòng sau ghi N số tự nhiên h1, h2, …, hn. (1 <= hi <= 100000)

Output

  • Gồm một số duy nhất thể hiện lượng nước tìm được.

Giới hạn

  • 50% số test có N <= 1000.

Example

Input
5  
1 3 1 2 3

Output  
3

Tutorial

Tại mỗi ô, cần biết được lượng nước còn đọng lại trên ô đó. Lượng này sẽ đọng lại nếu 2 bên trái phải của ô này có 2 ô khác cao hơn để chặn và sẽ lệ thuộc vào biên có độ cao nhỏ hơn.

Quy hoạch động đơn giản để tìm ra 2 biên cho mỗi ô, từ đó dễ dàng tìm được kết quả.


Submission

V11WATER.cpp