Submission #1152875

#TimeUsernameProblemLanguageResultExecution timeMemory
1152875the_coding_poohRectangles (IOI19_rect)C++20
27 / 100
442 ms132328 KiB
#include "rect.h" #include <bits/stdc++.h> #define uwu return using namespace std; const int SIZE = 2e2 + 5; int down_min[SIZE][SIZE][SIZE], left_min[SIZE][SIZE][SIZE], up_min[SIZE][SIZE][SIZE], right_min[SIZE][SIZE][SIZE]; long long count_rectangles(vector<vector<int> > a) { int n = a.size(), m = a[0].size(); for (int i = 0; i < n; i++){ for (int j = 0; j < m; j++){ for (int k = i + 1; k < n; k++){ down_min[i][j][j] = k - i; if(a[k][j] >= a[i][j]) break; } for (int k = j + 1; k < m; k++){ right_min[j][i][i] = k - j; if(a[i][k] >= a[i][j]) break; } for (int k = i - 1; k >= 0; k--){ up_min[i][j][j] = i - k; if(a[k][j] >= a[i][j]) break; } for (int k = j - 1; k >= 0; k--){ left_min[j][i][i] = j - k; if(a[i][k] >= a[i][j]) break; } } } for (int j = 0; j < m; j++){ for (int l = 2; l <= n; l++){ for (int i = 0; i < n; i++){ left_min[j][i][i + l - 1] = min(left_min[j][i][i + l - 2], left_min[j][i + l - 1][i + l - 1]); right_min[j][i][i + l - 1] = min(right_min[j][i][i + l - 2], right_min[j][i + l - 1][i + l - 1]); } } } for (int j = 0; j < n; j++){ for (int l = 2; l <= m; l++){ for (int i = 0; i < m; i++){ up_min[j][i][i + l - 1] = min(up_min[j][i][i + l - 2], up_min[j][i + l - 1][i + l - 1]); down_min[j][i][i + l - 1] = min(down_min[j][i][i + l - 2], down_min[j][i + l - 1][i + l - 1]); } } } long long ret = 0; for (int i1 = 0; i1 < n; i1++){ for (int j1 = 0; j1 < m; j1++){ for (int i2 = i1 + 2; i2 < n; i2++){ for (int j2 = j1 + 2; j2 <= j1 + right_min[j1][i1 + 1][i2 - 1]; j2++){ ret += (j1 >= j2 - left_min[j2][i1 + 1][i2 - 1]) && (i2 <= i1 + down_min[i1][j1 + 1][j2 - 1]) && (i1 >= i2 - up_min[i2][j1 + 1][j2 - 1]); } } } } uwu ret; }
#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...