原来AC的代码错的...
#include <iostream>
#include<cstring>
using namespace std;
char p[ 10005][80];
short next[80],next1[10005];
int r,c;
void getNext(char *p,int len)
{
int j,k;
next[0]=-1;
j=0;
k=-1;
while(j<len)
{
if(k==-1||p[k]==p[j])
{
k++;
j++;
next[j]=k;
}
else
k=next[k];
}
}
void getNextb(int len)
{
int j,k;
next1[0]=-1;
j=0;
k=-1;
while(j<len)
{
if(k==-1||strcmp(p[k],p[j])==0)
{
k++;
j++;
next1[j]=k;
}
else
k=next1[k];
}
}
int main()
{
int i,len,wide=0;
//short num[10005][80];
//char s[80];
short num[10005];
scanf("%d%d",&r,&c);
for(i=0;i<r;i++)
{
scanf("%s",p[i]);
len=c;
getNext(p[i],len);
/*num[i][0]=len-next[len];//zuixiaoxunhuanjie
memcpy(s,p[i]+next[len],num[i][0]+1);
len1=strlen(s);
getNext(s,len1);
int tem=len1-next[len1];
int k=0;
for(j=num[i][0];j<=len;j+=tem)
{
num[i][k++]=j;
}*/
num[i]=len-next[len];
//cout<<num[i]<<endl;
if(num[i]>wide)
wide=num[i];
}
getNextb(r);
int h=r-next1[r];
//cout<<r<<" "<<h<<endl;
cout<<h*wide<<endl;
return 0;
}