def rectangles_from_grid(P, noir=1):
    """Largest area rectangle in a binary matrix

    :param P: matrix
    :param noir: search for rectangles filled with value noir
    :returns: area, left, top, right, bottom of optimal rectangle
             consisting of all (i,j) with
             left <= j < right and top <= i <= bottom
    :complexity: linear
    """
    rows = len(P)
    cols = len(P[0])
    t = [0] * cols
    best = None
    for i in range(rows):
        for j in range(cols):
            if P[i][j] == noir:
                t[j] += 1
            else:
                t[j] = 0
        (area, left, height, right) = rectangles_from_histogram(t)
        alt = (area, left, i, right, i-height)
        if best is None or alt > best:
            best = alt
    return best
# snip}
dataset/ETHPy150Open jilljenn/tryalgo/tryalgo/rectangles_from_grid.py/rectangles_from_grid/original