Cod sursa(job #638403)

Utilizator stay_awake77Cangea Catalina stay_awake77 Data 20 noiembrie 2011 20:52:03
Problema DreptPal Scor 50
Compilator cpp Status done
Runda .com 2011 Marime 0.83 kb
#include <cstdio>

#define NMAX 1001
#define MAX(a,b) (a>b) ? a : b
#define MIN(a,b) (a<b) ? a : b

int A[NMAX][NMAX], D[NMAX][NMAX], i, j, k, lg, N, M, L, Max, S;

int main()
{
	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", &A[i][j]);
	
	for( i = 1; i <= N; ++i )
		for( j = 1; j <= M; ++j )
		{
			for( lg = 1; j - lg > 0 && j + lg <= M && A[i][j-lg] == A[i][j+lg]; ++lg );
			D[i][j] = 2*lg - 1;
		}
	
	for( i = 1; i <= N; ++i )
		for( j = 1; j <= M; ++j )
		{
			S = L = D[i][j];
			Max = MAX( Max, S );
			
			for( k = i + 1; k <= N; ++k )
			{
				L = MIN( L, D[k][j] );
				S = L * ( k - i + 1 );
				Max = MAX( Max, S );
			}
		}
	
	printf("%d\n", Max);
	
	return 0;
}