Pagini recente » Istoria paginii runda/jc2021-runda1/clasament | Cod sursa (job #1410980) | Cod sursa (job #2099553) | Cod sursa (job #2489699) | Cod sursa (job #636103)
Cod sursa(job #636103)
#include <stdio.h>
#define NMAX 1005
#define LMAX 20005
inline int cif(char x)
{
return x>='0' && x<='9';
}
int n,m,A[NMAX][NMAX],B[NMAX][NMAX],rez;
char line[LMAX];
void read()
{
scanf("%d%d\n",&n,&m);
int i,j,poz;
for (i=1; i<=n; i++)
{
fgets(line+1,LMAX,stdin);
poz=0;
for (j=1; j<=m; j++)
{
while (!cif(line[poz+1])) poz++;
while (cif(line[poz+1])) {poz++; A[i][j]=A[i][j]*10+line[poz]-'0';}
}
}
}
inline int max(int x,int y)
{
return x>y ? x : y;
}
void partI()
{
int i,j,a,b;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
a=b=j;
while (a-1>0 && b+1<=m && A[i][a-1]==A[i][b+1])
a--,b++;
B[i][j]=a;
}
}
void partII()
{
int i,j,k,a;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
a=B[i][j];
for (k=i; k>=1; k--)
{
a=max(a,B[k][j]);
rez=max(rez,((j-a)*2+1)*(i-k+1));
}
}
}
int main()
{
freopen("dreptpal.in","r",stdin);
freopen("dreptpal.out","w",stdout);
read();
partI();
partII();
printf("%d\n",rez);
return 0;
}