package main

// 穷举
func maxAreaOld(height []int) int {
	n := len(height)
	max := 0
	for left := 0; left < n-1; left++ {
		for right := 1; right < n; right++ {
			tmp := (right - left) * minInt(height[left], height[right])
			if tmp > max {
				max = tmp
			}
		}
	}
	return max
}

// DP?
func maxArea(height []int) int {
	n := len(height)
	l, r := 0, n-1
	max := 0
	for l < r {
		hl, hr := height[l], height[r]
		tmp := (r - l) * minInt(hl, hr)
		if tmp > max {
			max = tmp
		}
		if hl < hr {
			for ; l < r && height[l] <= hl; l++ {
			}
		} else {
			for ; l < r && height[r] <= hr; r-- {
			}
		}
	}
	return max
}

/* func main() {
	arr := []int{1, 2, 4, 54, 6, 54}
	fmt.Println(maxArea(arr))
} */