Pagini recente » Cod sursa (job #1098980) | Cod sursa (job #1335016) | Cod sursa (job #3255852) | Cod sursa (job #2110956) | Cod sursa (job #2283298)
#include <fstream>
using namespace std;
ifstream in("bmatrix.in");
ofstream out("bmatrix.out");
const int Nmax = 205;
int n, m, sol;
int v[Nmax], st[Nmax], sus[Nmax], dr[Nmax], jos[Nmax];
char s[Nmax][Nmax];
int main()
{
in >> n >> m;
for (int i = 1; i <= n; i++)
in >> (s[i] + 1);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
if (s[i][j] == '0')
v[j]++;
else
v[j] = 0;
int nr = 0;
int h = 40005;
for (int k = j; k > 0; k--)
{
h = min (h, v[k]);
nr = max (nr, h * (j - k + 1));
}
st[i] = max(max(st[i - 1], st[i]), nr);
sus[j] = max(max(sus[j - 1], sus[j]), nr);
}
}
for (int i = 1; i <= m; i++)
v[i] = 0;
for (int i = n; i >= 1; i--)
{
for (int j = m; j >= 1; j--)
{
if (s[i][j] == '0')
v[j]++;
else
v[j] = 0;
int nr = 0;
int h = 40005;
for (int k = j; k <= m; k++)
{
h = min (h, v[k]);
nr = max (nr, h * (k - j + 1));
}
dr[i] = max(max(dr[i + 1], dr[i]), nr);
jos[j] = max(max(jos[j + 1], jos[j]), nr);
}
}
for (int i = 1; i < n; i++)
sol = max (sol, st[i] + dr[i + 1]);
out << sol;
return 0;
}