Submission #823122

#TimeUsernameProblemLanguageResultExecution timeMemory
823122vjudge1Rectangles (IOI19_rect)C++17
0 / 100
45 ms73804 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(a[i - 1][j] <= a[ii][j]) {
                    break;
                }
                for(int jj = j; jj < m - 1; ++ jj) {
                    if(a[i][j - 1] <= a[i][jj]) {
                        break;
                    }
                    if(M[j][i][ii] < a[ii + 1][j] && N[i][j][jj] < a[i][jj + 1]) {
                        ++ 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...