알고리즘 호감 훈련
메모리 제한 1.0s : 시간 제한을 256.0MB을
문제에 대한 설명
고등학교,하지만 그는 다른 사람이 보이더라도, 그것은 비교적 간단한 문제입니다, 그녀를 찾을 수 없습니다와. 호감은, 그가 할 수있는 유일한 일이다. 그는 그녀의 행동을 사로보고, 그녀의 장소에서 보았다 매일, 체조 만하면 충분하다. Caizhuan는 놀이터 아에, 당신의 위치는 그들의 관계는 벽돌 사이에 고정되어처럼 그들이 흔들 수 없습니다, 장소를 설 수 있다는 것입니다. 또 작업자 포장 기억 전체 운동장 타일링 사각형 두 사각형 벽돌 하나 거기 (운동장 전체 행렬의 각 요소는 사각형 벽돌이고, 행렬 R 개의 행과 C 열로 간주 될 수 있음) 파란색, 다른 빨간색. 우리는 그와 그녀 사이 가장 큰 고체 광장에 대한 "사랑의 표시"를 정의, 당신이 얻을 수있는 프로그램 쓰기 "사랑의 표시를."
입력 형식
첫 번째 행의 두 개의 양의 정수 R C.
다음으로 R 개의 행과 C 컬럼은 0 청색 벽돌로 나타내는 붉은 벽돌 (1)로 표시되는 전체 운동장을 서술.
출력 형식
그와 그녀 사이에 "사랑 지수"를 의미하는 숫자입니다.
샘플 입력
. 5 8
0 0 0 1 1 1 1 0
. 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1
. 1 1 1 1 1 1 0 0
. 1 1 1 1 1 0 0 1
출력 샘플
9
상기의 데이터 사이즈는 합의
; R & LT, C <= 10의 40 개 %의 데이터
는 데이터 R & LT의 70 %, C <= 50;
100 % 데이터 R, C <= 200;
#include <stdio.h>
int R, C;
int playground[202][202] = { 0 };
int max(int a, int b)
{
return a > b ? a : b;
}
int find(int x, int y)
{
int width;
for (width = 2; x + width - 1 < R && y + width - 1 < C; ++width)
{
for (int i = x; i <= x + width - 1; ++i)
{
if (playground[i][y + width - 1] != playground[x][y])
return (width - 1) * (width - 1);
}
for (int j = y; j <= y + width - 1; ++j)
{
if (playground[x + width - 1][j] != playground[x][y])
return (width - 1) * (width - 1);
}
}
return (width - 1) * (width - 1);
}
int main()
{
scanf("%d %d", &R, &C);
for (int i = 0; i < R; ++i)
for (int j = 0; j < C; ++j)
scanf("%d", &playground[i][j]);
int max_area = 1;
for (int i = 0; i < R; ++i)
for (int j = 0; j < C; ++j)
max_area = max(max_area, find(i, j));
printf("%d", max_area);
return 0;
}