Cod sursa(job #636265)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 19 noiembrie 2011 18:10:22
Problema DreptPal Scor 50
Compilator cpp Status done
Runda .com 2011 Marime 0.79 kb
#include<fstream>
using namespace std;
int n,m,A[1010][1010],lg[1010][1010],Smax;

void Citire()
{
	int i,j;
	ifstream fin("dreptpal.in");
	fin>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			fin>>A[i][j];
	fin.close();
}

void Rezolvare()
{
	int i,j,k,st,dr,minim;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			st=dr=j;
			while(st>1 && dr<m && A[i][st-1]==A[i][dr+1])
			{
				st--;
				dr++;
			}
			lg[i][j]=dr-st+1;
		}
	}
	for(j=1;j<=m;j++)
	{
		for(i=1;i<=n;i++)
		{
			minim=lg[i][j];
			for(k=i;k<=n;k++)
			{
				minim=min(minim,lg[k][j]);
				Smax=max(Smax,(k-i+1)*minim);
			}
		}
	}
}

void Afisare()
{
	ofstream fout("dreptpal.out");
	fout<<Smax<<"\n";
	fout.close();
}

int main()
{
	Citire();
	Rezolvare();
	Afisare();
	return 0;
}