#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 1005 int p[MAX][MAX]; int check(int a,int b,int ans){ int temp=p[a][b]; for(int i=0;i<ans;i++) for(int j=0;j<ans;j++){ if(p[a+i][b+j]!=temp)return 0; } return 1; } int main(void){ int a,b; scanf("%d%d",&a,&b); int mmax; if(a>b)mmax=a; else mmax=b; int ans=0; for(int i=0;i<a;i++) for(int j=0;j<b;j++) scanf("%d",&p[i][j]); for(int i=0;i<a;i++) for(int j=0;j<b;j++) for(int k=ans+1;k<=mmax;k++){ if(i+k<=mmax&&j+k<=mmax) if(check(i,j,k)) ans=k; else break; } printf("%d",ans*ans); return 0; } /************************************************************** Problem: 1954 User: admin Language: C++ Result: Accepted Time:51 ms Memory:5088 kb ****************************************************************/