Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define NMAX 300
- #define CMAX 12
- using namespace std;
- ifstream fin("zid.in");
- ofstream fout("zid.out");
- int n, m, c;
- int Lmax, imax, jmax;
- int Z[NMAX][NMAX];
- int F[NMAX][NMAX][CMAX];
- int uz[CMAX];
- int main()
- {int i, j, k, ii, jj, L, cate;
- ///citire
- fin>>n>>m>>c;
- for (i=1; i<=n; i++)
- for (j=1; j<=m; j++) fin>>Z[i][j];
- ///determinarea tabloului de frecvente
- /// F[i][j][x]=numarul de aparitii ale literei x in zona cu coltul stanga sus (1,1) si coltul dreapta-jos (i,j).
- for (i=1; i<=n; i++)
- for (j=1; j<=m; j++)
- for (k=0; k<=c; k++) F[i][j][k]=F[i-1][j][k]+F[i][j-1][k]-F[i-1][j-1][k]+(Z[i][j]==k);
- ///determinat patrat colorat uniform de arie maxima
- for (i=1; i<=n; i++)
- for (j=1; j<=m; j++)
- for (L=min(n-i+1, m-j+1); L>Lmax; L--)
- {
- ii=i+L-1; jj=j+L-1;
- for (k=0; k<=c; k++) uz[k]=F[ii][jj][k]-F[ii][j-1][k]-F[i-1][jj][k]+F[i-1][j-1][k];
- for (k=0; !uz[k]; k++);
- cate=uz[k];
- for (; k<=c; k++)
- if (uz[k] && uz[k]!=cate) break;
- if (k==c+1) ///patrat colorat uniform
- {if (L>Lmax) {Lmax=L; imax=i; jmax=j;}
- break;}
- }
- fout<<Lmax*Lmax<<' '<<imax<<' '<<jmax<<'\n';
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement