Cod sursa(job #636912)

Utilizator ELHoriaHoria Cretescu ELHoria Data 20 noiembrie 2011 01:41:10
Problema DreptPal Scor 50
Compilator cpp Status done
Runda .com 2011 Marime 0.78 kb
#include <fstream>

using namespace std;

ifstream fin("dreptpal.in");
ofstream fout("dreptpal.out");

int N , M ,  p[1001][1001] , D[1002];

int main()
{
	fin>>N>>M;
	int l , r , lg , amax = N , lmin , maxa , maxb ;
	for(int i=1;i<=N;++i)
	{
		for(int j=1;j<=M;++j)
			fin>>D[j];
	
		for(int j=2;j<M;++j)
		{
			if(D[j-1]==D[j+1])
			{
				lg = 3;
				l = j-2 , r = j+2;
				while(l>=1 && r<=M && D[l]==D[r]) l-- , r++ , lg+=2;
				p[i][j] = lg;
				maxa = maxb = lmin = p[i][j];
				amax = max(amax,lmin);
				for(int k=i-1;k>=1;--k)
					{
					lmin = min(lmin,p[k][j]);
					maxb = ((i-k)+1)*lmin;
					if(maxb<maxa) break; else maxa = maxb;
					amax = max(amax,maxb);
					}
			}
			else  p[i][j] = 1;

			}
		}
	fout<<amax<<'\n';
	return 0;
}