← Home
package main

import (
	"fmt"
	"io"
	"os"
)

func nextInt(data []byte, i int) (int, int) {
	n := len(data)
	for i < n && (data[i] < '0' || data[i] > '9') {
		i++
	}
	v := 0
	for i < n && data[i] >= '0' && data[i] <= '9' {
		v = v*10 + int(data[i]-'0')
		i++
	}
	return v, i
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	n, idx := nextInt(data, idx)
	m, idx := nextInt(data, idx)

	step := m + 1
	freq := make([]uint16, m*step)

	for r := 0; r < n; r++ {
		for idx < len(data) && data[idx] != '0' && data[idx] != '1' {
			idx++
		}
		row := data[idx : idx+m]
		idx += m

		w := 0
		base := (m - 1) * step
		for j := m - 1; j >= 0; j-- {
			if row[j] == '1' {
				w++
				freq[base+w]++
			} else {
				w = 0
			}
			base -= step
		}
	}

	ans := 0
	for j := 0; j < m; j++ {
		base := j * step
		cnt := 0
		for w := m; w >= 1; w-- {
			cnt += int(freq[base+w])
			area := cnt * w
			if area > ans {
				ans = area
			}
		}
	}

	fmt.Print(ans)
}