Pagini recente » Cod sursa (job #1139614) | Cod sursa (job #171817) | Cod sursa (job #2874080) | Cod sursa (job #2407044) | Cod sursa (job #2785853)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dreptpal.in");
ofstream fout("dreptpal.out");
int a[1001][1001];
void pal(int s[],int n,int j)
{
if(n==0)
return;
n=2*n+1;
int l[n];
l[0]=0;
l[1]=1;
int c=1;
int r=2;
int i=0;
int imirror;
int maxl=1;
int maxc=0;
int start=-1;
int end=-1;
int diff=-1;
for(i=2; i<n; i++)
{
imirror=2*c-i;
l[i]=0;
diff=r-i;
if(diff>0)
l[i]=min(l[imirror],diff);
while(((i+l[i])<n&&(i-l[i])>0)&&(((i+l[i]+1)%2==0)||(s[(i+l[i]+1)/2]==s[(i-l[i]-1)/2])))
{
l[i]++;
}
if(l[i]>maxl)
{
maxl=l[i];
maxc=i;
}
if(i+l[i]>r)
{
c=i;
r=i+l[i];
}
}
long long sum=0;
for(i=0; i<n; i++)
{
a[i][j]=l[i];
}
// fout<<sum;
}
int main()
{
int n,m;
fin>>n>>m;
int i,j;
int s[1001];
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
fin>>s[j];
pal(s,m,j);
}
}
int maxi=0;
int ar=0;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
int lin=i;
int mini=(a[i][j]);
while(lin<n)
{
mini=min(a[i][j],mini);
ar=(lin-i+1)*(mini*2+1);
lin++;
maxi=max(maxi,ar);
}
}
}
fout<<maxi;
return 0;
}