Pagini recente » Cod sursa (job #2482651) | Cod sursa (job #2292043) | Cod sursa (job #1056663) | Cod sursa (job #1138782) | Cod sursa (job #636391)
Cod sursa(job #636391)
// brute O (N * M^2)
#include <iostream>
#include <cstdio>
using namespace std;
#define maxN 1005
int L[maxN][maxN], A[maxN][maxN], sol;
int main()
{
freopen ("dreptpal.in", "r", stdin);
freopen ("dreptpal.out", "w", stdout);
int N, M;
scanf ("%d %d", &N, &M);
for (int i = 1; i <= N; ++ i)
{
for (int j = 1; j <= M; ++ j) scanf ("%d", &A[i][j]);
L[i][1] = 1;
L[i][M] = 1;
}
for (int i = 1; i <= N; ++ i)
for (int j = 2; j < M; ++ j)
{
int l = 1;
for (int t = j + 1; t <= M; ++ t)
if (2 * j - t >= 1 && A[i][t] == A[i][2 * j - t]) l += 2;
L[i][j] = l;
}
for (int i = 1; i <= N; ++ i)
for (int j = 1; j <= M; ++ j)
{
int l = L[i][j];
int k = 1;
int minim = l;
int S = l;
sol = max (sol, S);
for (int t = i + 1; t <= N && L[t][j] != 1; ++ t)
{
++ k;
if (minim > L[t][j]) minim = L[t][j];
S = k * minim;
sol = max (sol, S);
}
}
printf ("%d", sol);
return 0;
}