#include int type; int m, n; char crops[500][500]; char field[500][500]; int zone_size[50]; int zones = 1; int max_zone = 0, max_i, max_j, max_c; int di[5] = {-1, 0, 1, 0}, dj[5] = {0, 1, 0, -1}; int vi, vj; void mark_zone(int i, int j, char c) { crops[i][j] = crops[i][j] - 'a' + 'A'; zone_size[zones]++; field[i][j] = zones; for (int k=0; k<4; ++k) { vi = i + di[k]; vj = j + dj[k]; if (crops[vi][vj] == c) mark_zone(vi, vj, c); } } void largest() { for (int i=1; i= 'a') { mark_zone(i,j, crops[i][j]); if (zone_size[zones] > max_zone) max_zone = zone_size[zones]; zones++; } } void new_size(int i, int j) { int s, ki, kj, li, lj; for (int k=0; k<4; ++k) { s = 1; ki = i+di[k]; kj = j+dj[k]; if (field[i][j] == field[ki][kj]) continue; s += crops[ki][kj]; for (int l=0; l<4; ++l) { li = i+di[l]; lj = j+dj[l]; if (l==k || field[li][lj] == field[ki][kj]) continue; if (crops[ki][kj] == crops[li][lj]) s += crops[li][lj]; } if (s > max_zone) { max_zone = s; max_i = i; max_j = j; max_c = crops[ki][kj] - 'A' + 'a'; } } } void enlarge() { largest(); for (int i=0; i