#include #include #include using namespace std; int m,n; vector< string > color; vector< vector > zone; int nrzones=0; vector zone_size(1,0); int i_dir[] = {1,-1,0, 0}; int j_dir[] = {0, 0,1,-1}; void dfs(int i, int j) { for(int d=0;d<4;++d){ int ii=i+i_dir[d]; int jj=j+j_dir[d]; if(color[ii][jj]==color[i][j] && !zone[ii][jj]){ int z = zone[i][j]; ++zone_size[z]; zone[ii][jj]=z; dfs(ii,jj); } } } int main() { int type; cin>>type>>m>>n; color.resize(m+2); bool problem=false; string s; getline(cin,s); // '\n' -- probably... if(s.size()>=unsigned(n)) problem=true; color[0]=string(n+2,'#'); color[m+1]=string(n+2,'#'); for(int i=1; i<=m; ++i){ if(!problem) getline(cin,s); else problem=false; color[i]="#"+s.substr(0,n)+"#"; } zone.resize(m+2,vector(n+2,0)); /*for(int i=1; i<=m; ++i) for(int j=1; j<=n; ++j) if(!zone[i][j]){ ++nrzones; zone[i][j]=nrzones; zone_size.push_back(1); dfs(i,j); } /*if(type==1){ int max=0; for(int i=1;imax) max=zone_size[i]; cout<0;--i) for(int j=n;j>0;--j) for(int d=0;d<4;++d){ char nc = color[i+i_dir[d]][j+j_dir[d]]; if(nc==color[i][j]) continue; vector nzones(5,0); int nrnz=0; for(int e=0;e<4;++e) if(nc==color[i+i_dir[e]][j+j_dir[e]]){ int cz=zone[i+i_dir[e]][j+j_dir[e]]; int k=0; while(kmax || (curr==max && !(maxi==i&&maxj==j&&maxc<=nc) )) max=curr, maxi=i, maxj=j, maxc=nc; } cout<