Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int NMAX = 1010;
- int width, height;
- int area, maxarea;
- int N, M;
- int H[NMAX][NMAX], W[NMAX][NMAX], m[NMAX][NMAX];
- int afisare_matrice(int mat[NMAX][NMAX]){
- for(int i = 1; i <= N; i++){
- for(int j = 1; j <= M; j++){
- printf("%d", mat[i][j]);
- if(mat[i][j] >= 10)
- printf(" ");
- else
- printf(" ");
- }
- printf("\n");
- }
- }
- int OK(int i, int j){
- if(i < 1 || j < 1 || i > N || j > M)
- return false;
- return true;
- }
- int main(){
- freopen("fadema.in", "r", stdin);
- freopen("fadema.out", "w", stdout);
- scanf("%d%d", &N, &M);
- for(int i = 1; i <= N; i++)
- for(int j = 1; j <= M; j++)
- scanf("%d", &m[i][j]);
- for(int i = 1; i <= N; i++){
- for(int j = 1; j < M; j++){
- if(j == 1)
- W[i][j] = 1;
- if(m[i][j + 1] != m[i][j])
- W[i][j + 1] = W[i][j] + 1;
- else
- W[i][j + 1] = 1;
- }
- }
- for(int i = 1; i < N; i++){
- for(int j = 1; j <= M; j++){
- if(i == 1)
- H[i][j] = 1;
- if(m[i + 1][j] != m[i][j])
- H[i + 1][j] = H[i][j] + 1;
- else
- H[i + 1][j] = 1;
- }
- }
- maxarea = 1;
- afisare_matrice(W);
- printf("%\n\n");
- afisare_matrice(H);
- printf("%\n\n");
- for(int i = 1; i <= N; i++){
- for(int j = 1; j <= M; j++){
- //height = H[i][j];
- width = 1e7;
- for(int k = i - H[i][j] + 1; k <= i; k++){
- width = min(width, W[k][j]);
- area = H[k][j] * width;
- maxarea = max(maxarea, area);
- }
- //cout << height << ' ' << width << " - (" << i << ", " << j << ")\n";
- }
- }
- printf("%d", maxarea);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment