1727. 重新排列后的最大子矩阵

func largestSubmatrix(matrix [][]int) int {
    n, m := len(matrix), len(matrix[0])
 
    for j := 0; j < m; j++ {
        for i := 1; i < n; i++ {
            if matrix[i][j] == 1 {
                matrix[i][j] += matrix[i - 1][j]
            }
        }
    }
 
    var ans int
    for i := 0; i < n; i++ {
        slices.Sort(matrix[i])
 
        for j := m - 1; j >= 0; j-- {
            ans = max(ans, (m - j) * matrix[i][j])
        }
    }
    return ans
}