Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define F first
  3. #define S second
  4. #define PB push_back
  5. #define MP make_pair
  6. #define MAXN 1001
  7. #define MOD 100000007
  8.  
  9. using namespace std;
  10.  
  11. typedef vector<int> vi;
  12. typedef pair<int,int> ii;
  13. typedef vector<ii> vii;
  14. typedef long long ll;
  15.  
  16. int n,m;
  17. char mat[MAXN][MAXN];
  18. int rep[MAXN][MAXN];
  19.  
  20. void build(){
  21. for(int i = 0; i < n; i++){
  22. for(int j = 0; j < m; j++){
  23. scanf(" %c", &mat[i][j]);
  24. }
  25. }
  26. for(int i = 0; i < n; i++){
  27. rep[i][0] = 1;
  28. for(int j = 1; j < m; j++){
  29. if(mat[i][j] != mat[i][j-1])
  30. rep[i][j] = 1;
  31. else
  32. rep[i][j] = rep[i][j-1] + 1;
  33. }
  34. }
  35.  
  36. // for(int i = 0; i < n ; i++){
  37. // for(int j = 0; j < m; j++){
  38. // printf("%d ", rep[i][j]);
  39. // }
  40. // printf("\n");
  41. // }
  42. }
  43.  
  44. bool check(int k){
  45. int c = 0;
  46. for(int i = 0; i < n; i++){
  47. c = 0;
  48. for(int j = 0; j < m; j++){
  49. if(rep[j][i] >= k)
  50. c++;
  51. else
  52. c = 0;
  53. if(c == k)
  54. break;
  55. }
  56. if( c == k )
  57. break;
  58. }
  59. return c == k;
  60. }
  61.  
  62. int main(){
  63. scanf("%d %d", &n ,&m);
  64. build();
  65. int l = 1; int r = max(n,m);
  66. while(l < r){
  67. int k = l + (r-l)/2;
  68. if(check(k)){
  69. l = k+1;
  70. }else{
  71. r = k - 1;
  72. }
  73. }
  74. if(!check(l))
  75. l--;
  76. cout << l*l << endl;
  77. return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement