Pagini recente » Cod sursa (job #2441307) | Cod sursa (job #1184097) | Cod sursa (job #356773) | Cod sursa (job #797641) | Cod sursa (job #333598)
Cod sursa(job #333598)
# include <algorithm>
using namespace std;
# define DIM 201
int n, m, rez, max0, max1, a[ DIM ][ DIM ], z[ DIM ][ DIM ], smax[ DIM ][ DIM ];
void solve () {
int c, i, j, k, l, zero;
char s[ DIM ];
scanf ( "%d%d\n", &n, &m );
for ( i = 1; i <= n; ++ i ) {
gets ( s );
for ( j = 1; j <= m; ++ j ) {
a[ i ][ j ] = s[ j - 1 ] - '0';
if ( !a[ i ][ j ] ) {
if ( !a[ i ][ j - 1 ] )
z[ i ][ j ] = z[ i ][ j - 1 ] + 1;
else
z[ i ][ j ] = 1;
for ( k = i; k > 0; -- k )
smax[ i ][ j ] = max ( smax[ i ][ j ], ( i - k + 1 ) * z[ k ][ j ] );
}
}
}
for ( l = 2; l <= n; ++ l ) {
max0 = max1 = 0;
for ( i = 1; i < l; ++ i )
for ( j = 1; j <= m; ++ j )
if ( !a[ i ][ j ] ) {
if ( !a[ i ][ j - 1 ] )
z[ i ][ j ] = z[ i ][ j - 1 ] + 1;
else
z[ i ][ j ] = 1;
zero = z[ i ][ j ];
for ( k = i; k > 0; -- k )
max0 = max ( max0, ( i - k + 1 ) * min ( zero, z[ k ][ j ] ) );
}
for ( i = l; i <= n; ++ i )
for ( j = 1; j <= m; ++ j )
if ( !a[ i ][ j ] ) {
if ( !a[ i ][ j - 1 ] )
z[ i ][ j ] = z[ i ][ j - 1 ] + 1;
else
z[ i ][ j ] = 1;
zero = z[ i ][ j ];
for ( k = i; k >= l; -- k )
max1 = max ( max1, ( i - k + 1 ) * min ( zero, z[ k ][ j ] ) );
}
if ( max0 + max1 > rez )
rez = max0 + max1;
}
for ( c = 2; c <= m; ++ c ) {
max0 = max1 = 0;
for ( i = 1; i <= n; ++ i )
for ( j = 1; j < l; ++ j )
if ( !a[ i ][ j ] ) {
if ( !a[ i ][ j - 1 ] )
z[ i ][ j ] = z[ i ][ j - 1 ] + 1;
else
z[ i ][ j ] = 1;
zero = z[ i ][ j ];
for ( k = i; k > 0; -- k )
max0 = max ( max0, ( i - k + 1 ) * min ( zero, z[ k ][ j ] ) );
}
for ( i = 1; i <= n; ++ i )
for ( j = l; j <= m; ++ j )
if ( !a[ i ][ j ] ) {
if ( !a[ i ][ j - 1 ] )
z[ i ][ j ] = z[ i ][ j - 1 ] + 1;
else
z[ i ][ j ] = 1;
zero = z[ i ][ j ];
for ( k = i; k >= l; -- k )
max1 = max ( max1, ( i - k + 1 ) * min ( zero, z[ k ][ j ] ) );
}
if ( max0 + max1 > rez )
rez = max0 + max1;
}
printf ( "%d", rez );
}
int main () {
freopen ( "bmatrix.in", "r", stdin );
freopen ( "bmatrix.out", "w", stdout );
solve ();
return 0;
}