Pagini recente » Cod sursa (job #1437830) | Cod sursa (job #2033670) | Cod sursa (job #2865436) | Cod sursa (job #3204044) | Cod sursa (job #1591229)
#include <bits/stdc++.h>
using namespace std;
char a[302][302];
int b[302][302], n, m, X, t[302];
void Citire()
{
char s[1000];
int i, j;
ifstream fin("teren.in");
fin >> n >> m >> X;
fin.get();
for (i = 1; i <= n; ++i)
{
fin.getline(s + 1, 998);
for (j = 1; j <= m; ++j)
a[i][j] = s[2 * j - 1];
}
}
void SumePeColoana()
{
int i, j;
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
if (a[i][j] == '0') b[i][j] = b[i-1][j];
else b[i][j] = 1 + b[i-1][j];
}
void Rezolva()
{
int L1, L2, i, j, H, Aria, nr1;
Aria = 0;
for (L1 = 1; L1 <= n; ++L1)
for (L2 = L1; L2 <= n; ++L2)
{
H = L2 - L1 + 1;
for (i = 1; i <= m; ++i)
t[i] = b[L2][i] - b[L1 - 1][i];
j = 1; nr1 = 0;
for (i = 1; i <= m; ++i)
{
nr1 += t[i];
while (nr1 > X)
{
nr1 -= t[j];
j++;
}
Aria = max(Aria, H * (i - j + 1));
}
}
ofstream fout("teren.out");
fout << Aria << "\n";
fout.close();
}
int main()
{
Citire();
SumePeColoana();
Rezolva();
return 0;
}