#include #include #include #define lmax 405 using namespace std; ifstream f("ferma3.in"); ofstream g("ferma3.out"); char cul,cara,ccurent,cmax; int tip,n,m,l,c,nrz,maxim,zona_c; int ap[lmax],dl[5]={0,-1,0,1,0},dc[5]={0,0,1,0,-1}; queue >q; pair poz; struct el { char car; int zona,nr; }v[6],a[lmax][lmax]; inline bool bun(int a,int b) { return a>0 && b>0 && a<=n && b<=m; } inline bool comp1(el e1,el e2) { if (e1.zona!=e2.zona) return e1.zonae2.nr; } inline bool comp2(el e1,el e2) { return e1.car<=e2.car; } inline void lee(int l,int c) { a[l][c].zona=zona_c; char caract=a[l][c].car; q.push(make_pair(l,c)); while (!q.empty()) { ap[zona_c]++; poz=q.front(); q.pop(); for (int j=1;j<=4;j++) { int lc=poz.first+dl[j]; int cc=poz.second+dc[j]; if (bun(lc,cc) && a[lc][cc].zona==0 && a[lc][cc].car==caract) { q.push(make_pair(lc,cc)); a[lc][cc].zona=zona_c; } } } } int main() { f>>tip>>n>>m; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) f>>a[i][j].car; for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) if (a[i][j].zona==0) { zona_c++; lee(i,j); } if (tip==1) { g<ma) { ma=nrz; cmax=ccurent; } nrz=v[k].nr; ccurent=v[k].car; } if (ma>maxim) { maxim=ma; l=i; c=j; cul=cmax; } } g<