Cod sursa(job #637656)

Utilizator crushackPopescu Silviu crushack Data 20 noiembrie 2011 15:47:58
Problema DreptPal Scor 50
Compilator cpp Status done
Runda .com 2011 Marime 0.82 kb
#include <stdio.h>
#define NMax 1010

const char IN[]="dreptpal.in",OUT[]="dreptpal.out";

int N,M,Rez;
int a[NMax][NMax];
int T[NMax][NMax];

int max(int x,int y){
	return x>y ? x : y;
}

int min(int x,int y){
	return x<y ? x : y;
}

void solve()
{
	int i,j,k;
	
	for (i=0;i<N;++i/*,printf("\n")*/)
		for (j=0;j<M;++j)
		{
			for (k=0;j-k>=0 && j+k<M && a[i][j-k]==a[i][j+k];++k);
			T[i][j]=2*k-1;
			//printf("%d ",T[i][j]);
		}
		
	
	for (i=0;i<N;++i)
		for (j=0;j<N;++j)
		{
			int Min=T[i][j];
			for (k=0;i+k<N;++k){
				Min= min(Min,T[i+k][j]);
				Rez= max(Rez,Min*(k+1));
			}
		}
}

int main()
{
	int i,j;
	freopen(IN,"r",stdin);
	scanf("%d%d",&N,&M);
	for (i=0;i<N;++i)
		for (j=0;j<M;++j)
			scanf("%d",&a[i][j]);
	fclose(stdin);
	
	solve();
	
	freopen(OUT,"w",stdout);
	printf("%d\n",Rez);
	fclose(stdout);
	
	return 0;
}