Pagini recente » Cod sursa (job #3131657) | Cod sursa (job #3180968) | Cod sursa (job #1496718) | Cod sursa (job #960713) | Cod sursa (job #637538)
Cod sursa(job #637538)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("dreptpal.in");
ofstream g("dreptpal.out");
int n,m,i,j,v[1001][1001],p[1001][1001],r,pi,s,e;
int c,sol=0,k,l,p2,p1;
bool stop;
bool ok(int r,int i,int p1) {
int pct=p1-p[r][p1]/2;
int pcc=i-p[r][i]/2;
if (pct>pcc) return true;
return false;
}
int main () {
f >> n >> m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++) f >> v[i][j];
for (r=1;r<=n;r++) {
pi=1;
while (pi<=m) {
s=pi-p[r][pi]/2;e=pi+p[r][pi]/2;stop=false;
while (s>0 && e<=m && v[r][s]==v[r][e]) {
s--;
e++;
stop=true;
}
p[r][pi]=e-s-1;
p2=pi+1;p1=pi-1;
while (p1>s && p2<e) {
if (ok(r,pi,p1)) {
p[r][p2]=p[r][p1];
}
else {
p[r][p2]=p[r][p1];
pi=p2-1;
break;
}
p1--;p2++;
}
pi++;
}
}
/*for (i=1;i<=n;i++) {
for (j=1;j<=m;j++)
g << p[i][j] << ' ';
g << '\n';
}*/
for (j=1;j<=m;j++) {
s=p[1][j];k=1;
for (i=1;i<=n;i++) {
s=min(s,p[i][j]);
sol=max(sol,s*k);
k++;
}
}
g << sol << '\n';
f.close();g.close();
return 0;
}