水题一个,想法和HDU 1505类似。
#include <cstdio>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
#define int64 __int64
#define M 1005
int dp[M][M] , h[M] , temp[M] , n , m;
char matrix[M][M];
int main()
{
int i , j , ans;
while (~scanf("%d%d",&n,&m))
{
memset(dp , 0 ,sizeof dp);
for (i = 0 ; i < n ; i++)scanf("%s",matrix[i]);
for (i = ans = 0 ; i < m ; i++)
{
for (j = 0 ; j < m ; j++)
{
if (matrix[i][j] == '1')h[j]++;
else h[j] = 0;
}
memcpy(temp , h , sizeof temp);
sort(temp,temp+m);
for (j = 0 ; j < m ; j++)
ans = max(ans , temp[j]*(m-j));
}
printf("%d\n",ans);
}
return 0;
}