Pagini recente » Cod sursa (job #2266) | Cod sursa (job #715549) | Cod sursa (job #1610499) | Cod sursa (job #424941) | Cod sursa (job #636765)
Cod sursa(job #636765)
#include <stdio.h>
int N, M, x[1024][1024], D[1024][1024];
int check (int i, int j)
{
int st = j - 1, dr = j + 1, l = 1;
while (st > 0 && dr <= M)
{
if (x[i][st] != x[i][dr])
return l;
st --;
dr ++;
l += 2;
}
return l;
}
int main ()
{
int i, j, max = 1, k;
freopen ("dreptpal.in", "r", stdin);
freopen ("dreptpal.out", "w", stdout);
scanf ("%d%d", &N, &M);
for (i = 1; i <= N; i ++)
for (j = 1; j <= M; j ++)
scanf ("%d", &x[i][j]);
for (i = 1; i <= N; i ++)
for (j = 1; j <= M; j ++)
D[i][j] = check (i, j);
for (j = 1; j <= M; j ++)
for (i = 1; i <= N; i ++)
{
if (D[i][j] == D[i - 1][j])
continue;
if ((N - i + 1) * D[i][j] < max)
continue;
for (k = i; k <= N; k ++)
if (D[k][j] < D[i][j])
break;
if ((k - i) * D[i][j] > max)
max = (k - i) * D[i][j];
}
printf ("%d", max);
return 0;
}