# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
589516 |
2022-07-04T19:42:32 Z |
Soumya1 |
Rectangles (IOI19_rect) |
C++17 |
|
538 ms |
1048576 KB |
#include "rect.h"
#include <bits/stdc++.h>
#ifdef __LOCAL__
#include <debug_local.h>
#endif
using namespace std;
long long count_rectangles(vector<vector<int>> a) {
long long ans = 0;
int n = a.size();
int m = a[0].size();
if (n <= 2) return 0;
if (m <= 2) return 0;
bool oneorzero = true;
for (auto i : a) {
for (int j : i) {
oneorzero &= (j <= 1);
}
}
if (n <= 3) {
vector<int> ok(m);
for (int i = 1; i < m - 1; i++) ok[i] = (a[0][i] > a[1][i] && a[2][i] > a[1][i]);
for (int i = 1; i < m - 1; i++) {
int cur_max = 0;
for (int j = i; j < m - 1; j++) {
if (!ok[j]) break;
cur_max = max(cur_max, a[1][j]);
if (a[1][i - 1] > cur_max && a[1][j + 1] > cur_max) ans++;
}
}
return ans;
}
if (oneorzero) {
vector<vector<int>> p(n + 1, vector<int> (m + 1));
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
p[i][j] = p[i - 1][j] + p[i][j - 1] - p[i - 1][j - 1] + (a[i - 1][j - 1] ^ 1);
}
}
auto sum = [&](int i, int j, int ii, int jj) {
return p[ii][jj] - p[i - 1][jj] - p[ii][j - 1] + p[i - 1][j - 1];
};
vector<vector<int>> row(n, vector<int> (m));
vector<vector<int>> col(m, vector<int> (n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
row[i][j] = (j == 0 ? 0 : row[i][j - 1]) + a[i][j];
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
col[i][j] = (j == 0 ? 0 : col[i][j - 1]) + a[j][i];
}
}
vector<vector<int>> to_right(n, vector<int> (m));
auto to_down = to_right;
for (int i = 0; i < n; i++) {
for (int j = m - 1; j >= 0; j--) {
if (a[i][j] == 1) to_right[i][j] = j;
else to_right[i][j] = (j == m - 1 ? m : to_right[i][j + 1]);
}
}
for (int i = n - 1; i >= 0; i--) {
for (int j = 0; j < m; j++) {
if (a[i][j] == 1) to_down[i][j] = i;
else to_down[i][j] = (i == n - 1 ? n : to_down[i + 1][j]);
}
}
for (int i = 1; i < n - 1; i++) {
for (int j = 1; j < m - 1; j++) {
if (a[i][j]) continue;
if (to_right[i][j] >= m) continue;
if (to_down[i][j] >= n) continue;
int r = to_right[i][j], d = to_down[i][j];
if (row[i - 1][r - 1] - row[i - 1][j - 1] != r - j) continue;
if (row[d][r - 1] - row[d][j - 1] != r - j) continue;
if (col[r][d - 1] - col[r][i - 1] != d - i) continue;
if (col[j - 1][d - 1] - col[j - 1][i - 1] != d - i) continue;
if (sum(i + 1, j + 1, d, r) != (d - i) * (r - j)) continue;
ans++;
}
}
return ans;
}
int max_val[n][n][m];
bool good[n][n][m];
memset(max_val, 0, sizeof max_val);
memset(good, 0, sizeof good);
for (int i = 1; i < n - 1; i++) {
for (int j = 1; j < m - 1; j++) {
for (int ii = i; ii < n - 1; ii++) {
max_val[i][ii][j] = (i == ii ? a[i][j] : max(a[ii][j], max_val[i][ii - 1][j]));
good[i][ii][j] = (max_val[i][ii][j] < min(a[i - 1][j], a[ii + 1][j]));
}
}
}
int mx[m][m][n];
bool gg[m][m][n];
memset(mx, 0, sizeof mx);
memset(gg, 0, sizeof gg);
for (int i = 1; i < m - 1; i++) {
for (int j = 1; j < n - 1; j++) {
for (int ii = i; ii < m - 1; ii++) {
mx[i][ii][j] = (i == ii ? a[j][i] : max(a[j][ii], mx[i][ii - 1][j]));
gg[i][ii][j] = (mx[i][ii][j] < min(a[j][i - 1], a[j][ii + 1]));
}
}
}
for (int i = 1; i < n - 1; i++) {
for (int j = 1; j < m - 1; j++) {
for (int ii = i; ii < n - 1; ii++) {
for (int jj = j; jj < m - 1; jj++) {
if (!good[i][ii][jj]) break;
bool g = true;
for (int x = i; x <= ii; x++) g &= gg[j][jj][x];
if (g) ans++;
}
}
}
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
1 ms |
564 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
552 KB |
Output is correct |
10 |
Correct |
1 ms |
548 KB |
Output is correct |
11 |
Correct |
1 ms |
468 KB |
Output is correct |
12 |
Correct |
1 ms |
468 KB |
Output is correct |
13 |
Correct |
0 ms |
296 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
1 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
212 KB |
Output is correct |
20 |
Correct |
1 ms |
212 KB |
Output is correct |
21 |
Correct |
1 ms |
292 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
1 ms |
564 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
552 KB |
Output is correct |
10 |
Correct |
1 ms |
548 KB |
Output is correct |
11 |
Correct |
1 ms |
468 KB |
Output is correct |
12 |
Correct |
1 ms |
468 KB |
Output is correct |
13 |
Correct |
0 ms |
296 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
1 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
212 KB |
Output is correct |
20 |
Correct |
1 ms |
212 KB |
Output is correct |
21 |
Correct |
1 ms |
292 KB |
Output is correct |
22 |
Correct |
13 ms |
5332 KB |
Output is correct |
23 |
Correct |
11 ms |
5364 KB |
Output is correct |
24 |
Correct |
11 ms |
5300 KB |
Output is correct |
25 |
Correct |
6 ms |
5332 KB |
Output is correct |
26 |
Correct |
5 ms |
5204 KB |
Output is correct |
27 |
Correct |
6 ms |
5204 KB |
Output is correct |
28 |
Correct |
6 ms |
5332 KB |
Output is correct |
29 |
Correct |
4 ms |
2132 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
1 ms |
564 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
552 KB |
Output is correct |
10 |
Correct |
1 ms |
548 KB |
Output is correct |
11 |
Correct |
1 ms |
468 KB |
Output is correct |
12 |
Correct |
1 ms |
468 KB |
Output is correct |
13 |
Correct |
0 ms |
296 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
1 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
13 ms |
5332 KB |
Output is correct |
18 |
Correct |
11 ms |
5364 KB |
Output is correct |
19 |
Correct |
11 ms |
5300 KB |
Output is correct |
20 |
Correct |
6 ms |
5332 KB |
Output is correct |
21 |
Correct |
5 ms |
5204 KB |
Output is correct |
22 |
Correct |
6 ms |
5204 KB |
Output is correct |
23 |
Correct |
6 ms |
5332 KB |
Output is correct |
24 |
Correct |
4 ms |
2132 KB |
Output is correct |
25 |
Correct |
1 ms |
212 KB |
Output is correct |
26 |
Correct |
0 ms |
212 KB |
Output is correct |
27 |
Correct |
1 ms |
212 KB |
Output is correct |
28 |
Correct |
1 ms |
212 KB |
Output is correct |
29 |
Correct |
1 ms |
292 KB |
Output is correct |
30 |
Correct |
295 ms |
79176 KB |
Output is correct |
31 |
Correct |
300 ms |
79104 KB |
Output is correct |
32 |
Correct |
290 ms |
79180 KB |
Output is correct |
33 |
Correct |
101 ms |
78924 KB |
Output is correct |
34 |
Correct |
79 ms |
78924 KB |
Output is correct |
35 |
Correct |
88 ms |
79088 KB |
Output is correct |
36 |
Correct |
81 ms |
79128 KB |
Output is correct |
37 |
Correct |
88 ms |
77420 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
1 ms |
564 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
552 KB |
Output is correct |
10 |
Correct |
1 ms |
548 KB |
Output is correct |
11 |
Correct |
1 ms |
468 KB |
Output is correct |
12 |
Correct |
1 ms |
468 KB |
Output is correct |
13 |
Correct |
0 ms |
296 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
1 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
13 ms |
5332 KB |
Output is correct |
18 |
Correct |
11 ms |
5364 KB |
Output is correct |
19 |
Correct |
11 ms |
5300 KB |
Output is correct |
20 |
Correct |
6 ms |
5332 KB |
Output is correct |
21 |
Correct |
5 ms |
5204 KB |
Output is correct |
22 |
Correct |
6 ms |
5204 KB |
Output is correct |
23 |
Correct |
6 ms |
5332 KB |
Output is correct |
24 |
Correct |
4 ms |
2132 KB |
Output is correct |
25 |
Correct |
295 ms |
79176 KB |
Output is correct |
26 |
Correct |
300 ms |
79104 KB |
Output is correct |
27 |
Correct |
290 ms |
79180 KB |
Output is correct |
28 |
Correct |
101 ms |
78924 KB |
Output is correct |
29 |
Correct |
79 ms |
78924 KB |
Output is correct |
30 |
Correct |
88 ms |
79088 KB |
Output is correct |
31 |
Correct |
81 ms |
79128 KB |
Output is correct |
32 |
Correct |
88 ms |
77420 KB |
Output is correct |
33 |
Correct |
1 ms |
212 KB |
Output is correct |
34 |
Correct |
0 ms |
212 KB |
Output is correct |
35 |
Correct |
1 ms |
212 KB |
Output is correct |
36 |
Correct |
1 ms |
212 KB |
Output is correct |
37 |
Correct |
1 ms |
292 KB |
Output is correct |
38 |
Runtime error |
538 ms |
1048576 KB |
Execution killed with signal 9 |
39 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
468 KB |
Output is correct |
2 |
Correct |
4 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
292 KB |
Output is correct |
5 |
Correct |
1 ms |
388 KB |
Output is correct |
6 |
Correct |
1 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
396 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
212 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
1 ms |
292 KB |
Output is correct |
6 |
Correct |
1 ms |
212 KB |
Output is correct |
7 |
Correct |
155 ms |
83504 KB |
Output is correct |
8 |
Correct |
315 ms |
172068 KB |
Output is correct |
9 |
Correct |
326 ms |
172620 KB |
Output is correct |
10 |
Correct |
318 ms |
172532 KB |
Output is correct |
11 |
Correct |
102 ms |
85824 KB |
Output is correct |
12 |
Correct |
209 ms |
161840 KB |
Output is correct |
13 |
Correct |
217 ms |
172420 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
1 ms |
564 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
212 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
1 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
552 KB |
Output is correct |
10 |
Correct |
1 ms |
548 KB |
Output is correct |
11 |
Correct |
1 ms |
468 KB |
Output is correct |
12 |
Correct |
1 ms |
468 KB |
Output is correct |
13 |
Correct |
0 ms |
296 KB |
Output is correct |
14 |
Correct |
1 ms |
212 KB |
Output is correct |
15 |
Correct |
1 ms |
212 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
13 ms |
5332 KB |
Output is correct |
18 |
Correct |
11 ms |
5364 KB |
Output is correct |
19 |
Correct |
11 ms |
5300 KB |
Output is correct |
20 |
Correct |
6 ms |
5332 KB |
Output is correct |
21 |
Correct |
5 ms |
5204 KB |
Output is correct |
22 |
Correct |
6 ms |
5204 KB |
Output is correct |
23 |
Correct |
6 ms |
5332 KB |
Output is correct |
24 |
Correct |
4 ms |
2132 KB |
Output is correct |
25 |
Correct |
295 ms |
79176 KB |
Output is correct |
26 |
Correct |
300 ms |
79104 KB |
Output is correct |
27 |
Correct |
290 ms |
79180 KB |
Output is correct |
28 |
Correct |
101 ms |
78924 KB |
Output is correct |
29 |
Correct |
79 ms |
78924 KB |
Output is correct |
30 |
Correct |
88 ms |
79088 KB |
Output is correct |
31 |
Correct |
81 ms |
79128 KB |
Output is correct |
32 |
Correct |
88 ms |
77420 KB |
Output is correct |
33 |
Runtime error |
538 ms |
1048576 KB |
Execution killed with signal 9 |
34 |
Halted |
0 ms |
0 KB |
- |