Submission #1229439

#TimeUsernameProblemLanguageResultExecution timeMemory
1229439GrayRectangles (IOI19_rect)C++20
0 / 100
472 ms1114112 KiB
#include "rect.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second bool cols[700][700][700]; bool rows[700][700][700]; int upw[700][700][700]; long long count_rectangles(vector<vector<int>> a) { memset(cols, 0, sizeof(cols)); memset(rows, 0, sizeof(rows)); memset(upw, 0, sizeof(upw)); int n=a.size(), m=a[0].size(); int cmx; for (int j=1; j<m-1; j++){ for (int up=1; up<n-1; up++){ cmx=a[up][j]; for (int down=up; down<n-1; down++){ cmx=max(cmx, a[down][j]); if (cmx<a[up-1][j] and cmx<a[down+1][j]){ cols[j][up][down]=1; } } } } for (int i=1; i<n-1; i++){ for (int l=1; l<m-1; l++){ cmx=a[i][l]; for (int r=l; r<m-1; r++){ cmx=max(cmx, a[i][r]); if (cmx<a[i][l-1] and cmx<a[i][r+1]){ rows[i][l][r]=1; } } } } for (int i=1; i<n-1; i++){ for (int l=1; l<m-1; l++){ for (int r=l; r<m-1; r++){ upw[i][l][r]=(rows[i][l][r]?upw[i-1][l][r]+1:0); } } } ll cnt=0; for (int up=1; up<n-1; up++){ for (int down=up; down<n-1; down++){ for (int r=1; r<m-1; r++){ for (int l=r; l>=1; l--){ if (!cols[l][up][down]){ break; } if (upw[down][l][r]>=(down-up+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...