#include #include #include using ui = unsigned long int; struct column { ui house = 0, leftHeight = 0; }; int main() { size_t n; std::cin >> n; std::stack s; column current; for (size_t i = 0; i < n; ++i) { std::cin >> current.house; current.leftHeight = std::max(current.house, current.leftHeight); s.push(current); ++(current.leftHeight); } ui sand = 0, rightHeight = 0; while (!s.empty()) { current = s.top(); s.pop(); rightHeight = std::max(current.house, rightHeight); sand += (std::min(rightHeight, current.leftHeight) - current.house) * 4 + (rightHeight == current.leftHeight ? 1 : 2); ++rightHeight; } std::cout << sand; }