제출 #823097

#제출 시각아이디문제언어결과실행 시간메모리
823097vjudge1Rectangles (IOI19_rect)C++17
0 / 100
550 ms1048576 KiB
#include "rect.h"
#include <bits/stdc++.h>

using namespace std;

long long count_rectangles(vector<vector<int> > a) {
	int n = a.size(),
        m = a[0].size();
    int N[n][m][m], 
        M[m][n][n];
    
    for(int i = 0; i < n; ++ i) {
        for(int j = 0; j < n; ++ j) {
            M[j][i][i] = N[i][j][j] = a[i][j];
        }
    }

    for(int i = 0; i < n; ++ i) {
        for(int j = i + 1; j < n; ++ j) {
            for(int k = 0; k < m; ++ k) {
                M[k][i][j] = max(M[k][i + 1][j], M[k][i][j - 1]);
            }
        }
    }

    for(int i = 0; i < m; ++ i) {
        for(int j = i + 1; j < m; ++ j) {
            for(int k = 0; k < n; ++ k) {
                N[k][i][j] = max(N[k][i + 1][j], N[k][i][j - 1]);
            }
        }
    }

    long long cnt = 0;
    for(int i = 1; i < n - 1; ++ i) {
        for(int j = 1; j < m - 1; ++ j) {
            for(int ii = i; ii < n - 1; ++ ii) {
                if(min(a[i - 1][j], a[ii + 1][j]) <= M[j][i][ii]) {
                    break;
                }
                for(int jj = j; jj < m - 1; ++ jj) {
                    if(min(a[i][j - 1], a[i][jj + 1]) <= N[i][j][jj]) {
                        break;
                    }
                    ++ cnt;
                }
            }
        }
    }
    return cnt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...