Pagini recente » Cod sursa (job #37543) | Cod sursa (job #990433) | Cod sursa (job #172714) | Cod sursa (job #2719946) | Cod sursa (job #635746)
Cod sursa(job #635746)
#include <stdio.h>
#define Nmax 1001
#define Mmax 1001
int m,n,A[Nmax][Mmax],i,j;
int pali(int i,int k,int l)
{
while(k!=l)
{
if(A[i][k]!=A[i][l])
return 0;
k++;
l--;
}
return 1;
}
int palip(int i,int k,int l)
{
while(l>k)
{
if(A[i][k]!=A[i][l])
return 0;
k++;
l--;
}
return 1;
}
void solve()
{
int k,l,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]);
if(m%2)
{
for(i=1;i<=n-1;i++)
{
k=1;
l=m;
while(k!=l && !pali(i,k,l))
{
k++;
l--;
}
if(k!=l) //am gasit un palindrom
{
for(j=i+1;j<=n && pali(j,k,l);j++);
if((j-i+1)%2)
s=(l-k+1)*(j-i+1);
else
s=(l-k+1)*(j-i);
if(s>smax)
smax=s;
}
}
k=1;
l=m;
if(pali(n,k,l))
if((l-k+1)>smax)
smax=l-k+1;
printf("%d",smax);
}
else
{
for(i=1;i<=n-1;i++)
{
k=1;
l=m;
while(l>k && !palip(i,k,l))
{
k++;
l--;
}
if(k<l) //am gasit un palindrom
{
for(j=i+1;j<=n && palip(j,k,l);j++);
if((j-i+1)%2)
s=(l-k+1)*(j-i+1);
else
s=(l-k+1)*(j-i);
if(s>smax)
smax=s;
}
}
k=1;
l=m;
if(palip(n,k,l))
if((l-k+1)>smax)
smax=l-k+1;
printf("%d",smax);
}
}
int main()
{
solve();
return 0;
}