Pagini recente » Cod sursa (job #584035) | Cod sursa (job #1410652) | Cod sursa (job #98470) | Cod sursa (job #1023234) | Cod sursa (job #1783258)
#include <cstdio>
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>
#include <iomanip>
#include <cstring>
#include <map>
#include <iomanip>
#include <unordered_map>
#include <stack>
#define MOD 800013
#define pb push_back
#define INF 0x3f3f3f3f
#define ll long long
#define NMAX 205
using namespace std;
typedef pair<int, int> pii;
ifstream fin("bmatrix.in");
ofstream fout("bmatrix.out");
int amax[NMAX][NMAX],sp[NMAX][NMAX],aux[NMAX][NMAX],n,m,rez;
char a[NMAX][NMAX];
void solve() {
int i,j,k,vmin;
for(i=1;i<=n;++i) {
for(j=1;j<=m;++j) {
if(a[i][j]=='0') sp[i][j]=sp[i][j-1]+1;
else sp[i][j]=0;
amax[i][j]=0;
}
}
for(i=1;i<=n;++i) {
for(j=1;j<=m;++j) {
vmin=INF;
for(k=1;i-k+1>0;++k) {
vmin=min(vmin,sp[i-k+1][j]);
amax[i][k]=max(max(max(vmin*k,amax[i][k-1]),amax[i][k]),amax[i-1][k-1]);
}
}
}
for(i=1;i<n;++i) rez=max(rez,amax[i][i]+amax[n][n-i]);
}
int main() {
int j,i;
fin>>n>>m;
for(i=1;i<=n;++i) fin>>(a[i]+1);
solve();
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
aux[m-j+1][i]=a[i][j];
swap(n,m);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j) a[i][j]=aux[i][j];
solve();
fout<<rez;
return 0;
}