Advertisement
a53

Zid

a53
Aug 21st, 2021
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #include <fstream>
  2. #define NMAX 300
  3. #define CMAX 12
  4.  
  5. using namespace std;
  6. ifstream fin("zid.in");
  7. ofstream fout("zid.out");
  8. int n, m, c;
  9. int Lmax, imax, jmax;
  10. int Z[NMAX][NMAX];
  11. int F[NMAX][NMAX][CMAX];
  12. int uz[CMAX];
  13.  
  14. int main()
  15. {int i, j, k, ii, jj, L, cate;
  16. ///citire
  17. fin>>n>>m>>c;
  18. for (i=1; i<=n; i++)
  19. for (j=1; j<=m; j++) fin>>Z[i][j];
  20. ///determinarea tabloului de frecvente
  21. /// F[i][j][x]=numarul de aparitii ale literei x in zona cu coltul stanga sus (1,1) si coltul dreapta-jos (i,j).
  22. for (i=1; i<=n; i++)
  23. for (j=1; j<=m; j++)
  24. 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);
  25. ///determinat patrat colorat uniform de arie maxima
  26.  
  27. for (i=1; i<=n; i++)
  28. for (j=1; j<=m; j++)
  29. for (L=min(n-i+1, m-j+1); L>Lmax; L--)
  30. {
  31. ii=i+L-1; jj=j+L-1;
  32. 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];
  33. for (k=0; !uz[k]; k++);
  34. cate=uz[k];
  35. for (; k<=c; k++)
  36. if (uz[k] && uz[k]!=cate) break;
  37. if (k==c+1) ///patrat colorat uniform
  38. {if (L>Lmax) {Lmax=L; imax=i; jmax=j;}
  39. break;}
  40. }
  41. fout<<Lmax*Lmax<<' '<<imax<<' '<<jmax<<'\n';
  42. fout.close();
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement