#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define LIM 405 using namespace std; int ty, n, m, currS; pair mat[LIM][LIM]; // id componenta conexa din care face parte int v[LIM * LIM]; char c[LIM][LIM]; bool viz[LIM][LIM]; int d[4][2] = {{-1, 0}, {0, +1}, {+1, 0}, {0, -1}}; void dfs(int ins, int jns, int id) { viz[ins][jns] = true; mat[ins][jns] = make_pair(id, c[ins][jns]); currS++; for(int i = 0; i < 4; i++) { int ni = ins + d[i][0]; int nj = jns + d[i][1]; if(ni >= 0 && ni < n && nj >= 0 && nj < m && !viz[ni][nj] && c[ins][jns] == c[ni][nj]) { dfs(ni, nj, id); } } } void responseTo2() { int mx = -1; int idChangei = -1, idChangej = -1; char chChange = ' '; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { for(int ch = 0; ch < 26; ch++) { char chnew = ch + 'a'; char chold = c[i][j]; c[i][j] = chnew; // if(i == 0 && j == 2 && ch == 1) { // cout << "k\n"; // } set ss; for(int k = 0; k < 4; k++) { int ni = i + d[k][0]; int nj = j + d[k][1]; int s = 0; if(ni >= 0 && ni < n && nj >= 0 && nj < m && mat[ni][nj].second == c[i][j] && mat[ni][nj].first != mat[i][j].first) { ss.insert(mat[ni][nj].first); } for(set::iterator it = ss.begin(); it != ss.end(); it++) { s += v[*it]; } s++; if(mx < s) { idChangei = i; idChangej = j; chChange = chnew; mx = s; } } c[i][j] = chold; } } } printf("%d %d\n", idChangei + 1, idChangej + 1); printf("%c\n", chChange); } int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); scanf("%d\n", &ty); scanf("%d %d\n", &n, &m); for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { scanf("%c", &c[i][j]); } scanf("\n"); } int mx = -1; int idCC = 1; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { if(!viz[i][j]) { currS = 0; dfs(i, j, idCC); v[idCC] = currS; idCC++; mx = max(mx, currS); } } } // for(int i = 0; i < n; i++) { // for(int j = 0; j < m; j++) { // cout << mat[i][j].first << mat[i][j].second << " "; // << mat[i][j].second // } // cout << endl; // } if(ty == 1) { printf("%d\n", mx); } else { responseTo2(); } return 0; }