Pagini recente » Cod sursa (job #2648200) | Cod sursa (job #1715741) | Cod sursa (job #1706079) | Cod sursa (job #1242634) | Cod sursa (job #636359)
Cod sursa(job #636359)
#include <cstdio>
#include <iostream>
#define Nmax 1010
#define Mmax 1010
using namespace std;
long m,n,A[Nmax][Mmax],i,j;
int pali(long i,long k,long l)
{
while(k!=l)
{
if(A[i][k]!=A[i][l])
return 0;
k++;
l--;
}
return 1;
}
int palip(long i,long k,long l)
{
while(l>k)
{
if(A[i][k]!=A[i][l])
return 0;
k++;
l--;
}
return 1;
}
void solve()
{
long k,ok,l,pos,smax=0,s=0;
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++)
{
k=1;
l=m;
if(m%2)
{
while(k<l)
{
if(pali(i,k,l))
{
while(k<l)
{
j=i;
pos=j-1;
while(j<=n)
{
ok=0;
while(pali(j,k,l) && j<=n)
j++,ok=1;
if(ok)
{
pos++;
if((j-pos)%2)
s=(l-k+1)*(j-pos);
else
s=(l-k+1)*(j-pos-1);
if(s>smax)
smax=s;
pos=j-1;
}
else
{
j++;
pos=j-1;
}
}
k++;
l--;
}
}
k++;
l--;
}
}
else
{
while(k<l)
{
if(palip(i,k,l))
{
while(k<l)
{
j=i;
pos=j-1;
while(j<=n)
{
ok=0;
while(palip(j,k,l) && j<=n)
j++,ok=1;
if(ok)
{
pos++;
if((j-pos)%2)
s=(l-k+1)*(j-pos);
else
s=(l-k+1)*(j-pos-1);
if(s>smax)
smax=s;
pos=j-1;
}
else
{
j++;
pos=j-1;
}
}
k++;
l--;
}
}
k++;
l--;
}
}
}
printf("%d",smax);
}
int main()
{
solve();
return 0;
}