#include <vector>
#include <algorithm>
#include <climits>
 
using VecI = std::vector<int>;
 
class Solution {
public:
    int maxArea(VecI& h) {
        if (h.size() == 2) {
            return std::min(h[0], h[1]);
        }
 
        int left = 0, right = h.size() - 1;
        int currentMax = INT_MIN;
 
        while (left < right) {
            int area = std::min(h[left], h[right]) * (right - left);
            if (area > currentMax) currentMax = area;
 
            if (h[left] < h[right]) left++;
            else right--;
        }
 
        return currentMax;
    }
};