Pagini recente » Cod sursa (job #1303378) | Cod sursa (job #997870) | Cod sursa (job #2883609) | Cod sursa (job #2610787) | Cod sursa (job #930186)
Cod sursa(job #930186)
#include<fstream>
#include<algorithm>
using namespace std;
int b[1010],a[1010][1010],pos[1010],v[1010],st,i,j,n,m,c,lim;
int main(void){
ifstream fin("dreptpal.in");
ofstream fout("dreptpal.out");
fin>>n>>m; b[0]=-1; b[m+1]=-2;
for (i=1; i<=n; ++i) {
for (j=1; j<=m; ++j) fin>>b[j];
c=1; lim=1;
for (j=2; j<m; ++j) {
if (j<=lim) a[i][j]=min(a[i][2*c-j],lim-j);
while (b[j+a[i][j]+1]==b[j-a[i][j]-1]) ++a[i][j];
if (j+a[i][j]>lim) { c=j; lim=j+a[i][j]; }
}
}
int rez=n; v[0]=-1;
for (j=2; j<m; ++j) {
st=0; a[n+1][j]=-1;
for (i=1; i<=n+1; ++i) {
int col=a[i][j];
if (col>v[st]) { ++st; v[st]=col; pos[st]=i; }
else if (col<v[st]) {
while (col<v[st]) {
if (v[st]*(i-pos[st])*2+i-pos[st]>rez) rez=2*v[st]*(i-pos[st])+i-pos[st];
--st;
}
if (col>v[st]) { ++st; v[st]=col; }
}
}
}
fout<<rez;
return(0);
}