Pagini recente » Cod sursa (job #2719522) | Cod sursa (job #2541667) | Cod sursa (job #704896) | Cod sursa (job #2383754) | Cod sursa (job #636959)
Cod sursa(job #636959)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define MAXN 1010
inline int max(int i, int j)
{
return i > j ? i : j;
}
FILE* fin = fopen("dreptpal.in", "r");
FILE* fout = fopen("dreptpal.out", "w");
int n, m, mat[MAXN][MAXN], pali[MAXN][MAXN];
int main()
{
fscanf (fin, "%d %d\n", &n, &m);
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
fscanf (fin, "%d ", &mat[i][j]);
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
while (j - pali[i][j] >= 1 && j + pali[i][j] <= m &&
mat[i][j - pali[i][j]] == mat[i][j + pali[i][j]]) {
++pali[i][j];
}
pali[i][j] = (pali[i][j] << 1) - 1;
}
}
int maxpali = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
int up = 0, down = 0;
while (pali[i - up][j] >= pali[i][j]) {
++up;
}
while (pali[i + down][j] >= pali[i][j]) {
++down;
}
maxpali = max(maxpali, (up + down - 1) * pali[i][j]);
}
}
fprintf (fout, "%d\n", maxpali);
fclose(fin);
fclose(fout);
return 0;
}