Pagini recente » Cod sursa (job #1743392) | Cod sursa (job #2849140) | Cod sursa (job #1292027) | Cod sursa (job #1281050) | Cod sursa (job #2447728)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("bmatrix.in");
ofstream fout ("bmatrix.out");
int n, m, a[205][205], s[205], Max;
int max_sus[205], max_jos[205];
void fjaoisdfjl() {
int nr = 0;
memset(s, 0, sizeof(s));
for (int i = 1; i <= n; ++i) {
max_sus[i] = max_sus[i - 1];
for (int j = 1; j <= m; ++j)
if (a[i][j] == 0)
++s[j];
else
s[j] = 0;
for (int c = 1; c <= m; ++c) {
for (int j = c; j; --j) {
if (s[j] < s[c])
break;
++nr;
}
for (int j = c + 1; j <= m; ++j) {
if (s[j] < s[c])
break;
++nr;
}
max_sus[i] = max(max_sus[i], nr * s[c]);
nr = 0;
}
}
memset(s, 0, sizeof(s));
for (int i = n; i; --i) {
max_jos[i] = max_jos[i + 1];
for (int j = 1; j <= m; ++j)
if (a[i][j] == 0)
++s[j];
else
s[j] = 0;
for (int c = 1; c <= m; ++c) {
for (int j = c; j; --j) {
if (s[j] < s[c])
break;
++nr;
}
for (int j = c + 1; j <= m; ++j) {
if (s[j] < s[c])
break;
++nr;
}
max_jos[i] = max(max_jos[i], nr * s[c]);
nr = 0;
}
}
for (int i = 1; i < n; ++i)
Max = max(Max, max_sus[i] + max_jos[i + 1]);
}
int main() {
fin >> n >> m;
char c;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
fin >> c;
a[i][j] = c - '0';
}
}
fjaoisdfjl();
fin.close();
ifstream fin("bmatrix.in");
fin >> n >> m;
char caracterfsjefdn;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
fin >> caracterfsjefdn;
a[j][i] = caracterfsjefdn - '0';
}
}
swap(n, m);
fjaoisdfjl();
fout << Max;
return 0;
}