# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
825874 |
2023-08-15T08:59:44 Z |
pawned |
Rectangles (IOI19_rect) |
C++17 |
|
969 ms |
430100 KB |
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;
#include "rect.h"
int dirX[4] = {-1, 1, 0, 0};
int dirY[4] = {0, 0, -1, 1};
int N, M;
int grid[2505][2505];
bool vis[2505][2505];
int tpt, bpt, lpt, rpt;
// tpt = top, bpt = bottom, lpt = left, rpt = right
int compsize = 0;
void dfs(int x, int y) {
tpt = max(tpt, x);
bpt = min(bpt, x);
rpt = max(rpt, y);
lpt = min(lpt, y);
compsize++;
vis[x][y] = true;
for (int i = 0; i < 4; i++) {
int newX = x + dirX[i];
int newY = y + dirY[i];
if (newX < 0 || newX >= N)
continue;
if (newY < 0 || newY >= M)
continue;
if (grid[newX][newY] == 0 && !vis[newX][newY])
dfs(newX, newY);
}
}
void reset() {
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
grid[i][j] = 0;
vis[i][j] = false;
}
}
}
bool check(int x0, int x1, int y0, int y1) {
for (int i = x0; i <= x1; i++) {
for (int j = y0; j <= y1; j++) {
int h0 = grid[i][j];
int h1 = grid[i][y0 - 1];
int h2 = grid[i][y1 + 1];
int h3 = grid[x0 - 1][j];
int h4 = grid[x1 + 1][j];
if (h0 >= h1 || h0 >= h2 || h0 >= h3 || h0 >= h4)
return false;
}
}
return true;
}
ll count_rectangles(vector<vi> a) {
N = a.size();
M = a[0].size();
reset();
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
grid[i][j] = a[i][j];
}
}
// SUBTASKS 1, 2, 3, 5 BEGIN
if (N * M <= 40000) {
int total = 0;
for (int x0 = 1; x0 <= N - 2; x0++) {
for (int x1 = x0; x1 <= N - 2; x1++) {
for (int y0 = 1; y0 <= M - 2; y0++) {
for (int y1 = y0; y1 <= M - 2; y1++) {
if (check(x0, x1, y0, y1))
total++;
}
}
}
}
return total;
}
// SUBTASKS 1, 2, 3, 5 END
ll total = 0;
for (int i = 0; i <= N - 1; i++) {
for (int j = 0; j <= M - 1; j++) {
if (grid[i][j] == 0 && !vis[i][j]) {
tpt = -1;
bpt = 10000;
rpt = -1;
lpt = 10000;
compsize = 0;
dfs(i, j);
if (bpt == 0 || tpt == N - 1)
continue;
if (lpt == 0 || rpt == M - 1)
continue;
if (compsize == (tpt - bpt + 1) * (rpt - lpt + 1)) {
// cout<<"good "<<i<<" "<<j<<endl;
total++;
}
}
}
}
return total;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
2 ms |
468 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
504 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
0 ms |
468 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
468 KB |
Output is correct |
10 |
Correct |
1 ms |
468 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 |
212 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
468 KB |
Output is correct |
20 |
Correct |
0 ms |
468 KB |
Output is correct |
21 |
Correct |
0 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
2 ms |
468 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
504 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
0 ms |
468 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
468 KB |
Output is correct |
10 |
Correct |
1 ms |
468 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 |
212 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
0 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
1 ms |
468 KB |
Output is correct |
20 |
Correct |
0 ms |
468 KB |
Output is correct |
21 |
Correct |
0 ms |
340 KB |
Output is correct |
22 |
Correct |
26 ms |
852 KB |
Output is correct |
23 |
Correct |
22 ms |
900 KB |
Output is correct |
24 |
Correct |
22 ms |
892 KB |
Output is correct |
25 |
Correct |
19 ms |
904 KB |
Output is correct |
26 |
Correct |
24 ms |
852 KB |
Output is correct |
27 |
Correct |
25 ms |
852 KB |
Output is correct |
28 |
Correct |
24 ms |
852 KB |
Output is correct |
29 |
Correct |
6 ms |
852 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
2 ms |
468 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
504 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
0 ms |
468 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
468 KB |
Output is correct |
10 |
Correct |
1 ms |
468 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 |
212 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
26 ms |
852 KB |
Output is correct |
18 |
Correct |
22 ms |
900 KB |
Output is correct |
19 |
Correct |
22 ms |
892 KB |
Output is correct |
20 |
Correct |
19 ms |
904 KB |
Output is correct |
21 |
Correct |
24 ms |
852 KB |
Output is correct |
22 |
Correct |
25 ms |
852 KB |
Output is correct |
23 |
Correct |
24 ms |
852 KB |
Output is correct |
24 |
Correct |
6 ms |
852 KB |
Output is correct |
25 |
Correct |
0 ms |
212 KB |
Output is correct |
26 |
Correct |
0 ms |
212 KB |
Output is correct |
27 |
Correct |
1 ms |
468 KB |
Output is correct |
28 |
Correct |
0 ms |
468 KB |
Output is correct |
29 |
Correct |
0 ms |
340 KB |
Output is correct |
30 |
Correct |
780 ms |
2068 KB |
Output is correct |
31 |
Correct |
781 ms |
2072 KB |
Output is correct |
32 |
Correct |
773 ms |
2044 KB |
Output is correct |
33 |
Correct |
692 ms |
2048 KB |
Output is correct |
34 |
Correct |
969 ms |
2068 KB |
Output is correct |
35 |
Correct |
961 ms |
2124 KB |
Output is correct |
36 |
Correct |
920 ms |
2068 KB |
Output is correct |
37 |
Correct |
882 ms |
2048 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
2 ms |
468 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
504 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
0 ms |
468 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
468 KB |
Output is correct |
10 |
Correct |
1 ms |
468 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 |
212 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
26 ms |
852 KB |
Output is correct |
18 |
Correct |
22 ms |
900 KB |
Output is correct |
19 |
Correct |
22 ms |
892 KB |
Output is correct |
20 |
Correct |
19 ms |
904 KB |
Output is correct |
21 |
Correct |
24 ms |
852 KB |
Output is correct |
22 |
Correct |
25 ms |
852 KB |
Output is correct |
23 |
Correct |
24 ms |
852 KB |
Output is correct |
24 |
Correct |
6 ms |
852 KB |
Output is correct |
25 |
Correct |
780 ms |
2068 KB |
Output is correct |
26 |
Correct |
781 ms |
2072 KB |
Output is correct |
27 |
Correct |
773 ms |
2044 KB |
Output is correct |
28 |
Correct |
692 ms |
2048 KB |
Output is correct |
29 |
Correct |
969 ms |
2068 KB |
Output is correct |
30 |
Correct |
961 ms |
2124 KB |
Output is correct |
31 |
Correct |
920 ms |
2068 KB |
Output is correct |
32 |
Correct |
882 ms |
2048 KB |
Output is correct |
33 |
Correct |
0 ms |
212 KB |
Output is correct |
34 |
Correct |
0 ms |
212 KB |
Output is correct |
35 |
Correct |
1 ms |
468 KB |
Output is correct |
36 |
Correct |
0 ms |
468 KB |
Output is correct |
37 |
Correct |
0 ms |
340 KB |
Output is correct |
38 |
Incorrect |
15 ms |
10580 KB |
Output isn't correct |
39 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
6 ms |
340 KB |
Output is correct |
2 |
Correct |
5 ms |
408 KB |
Output is correct |
3 |
Correct |
4 ms |
340 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
11 ms |
404 KB |
Output is correct |
6 |
Correct |
11 ms |
340 KB |
Output is correct |
7 |
Correct |
11 ms |
340 KB |
Output is correct |
8 |
Correct |
10 ms |
412 KB |
Output is correct |
9 |
Correct |
10 ms |
416 KB |
Output is correct |
10 |
Correct |
1 ms |
340 KB |
Output is correct |
11 |
Correct |
0 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
468 KB |
Output is correct |
4 |
Correct |
0 ms |
468 KB |
Output is correct |
5 |
Correct |
0 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
352 KB |
Output is correct |
7 |
Correct |
98 ms |
37932 KB |
Output is correct |
8 |
Correct |
206 ms |
79632 KB |
Output is correct |
9 |
Correct |
202 ms |
80044 KB |
Output is correct |
10 |
Correct |
204 ms |
80024 KB |
Output is correct |
11 |
Correct |
171 ms |
152356 KB |
Output is correct |
12 |
Correct |
391 ms |
364444 KB |
Output is correct |
13 |
Correct |
393 ms |
430100 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
468 KB |
Output is correct |
3 |
Correct |
2 ms |
468 KB |
Output is correct |
4 |
Correct |
1 ms |
468 KB |
Output is correct |
5 |
Correct |
1 ms |
504 KB |
Output is correct |
6 |
Correct |
1 ms |
468 KB |
Output is correct |
7 |
Correct |
0 ms |
468 KB |
Output is correct |
8 |
Correct |
0 ms |
340 KB |
Output is correct |
9 |
Correct |
1 ms |
468 KB |
Output is correct |
10 |
Correct |
1 ms |
468 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 |
212 KB |
Output is correct |
14 |
Correct |
0 ms |
340 KB |
Output is correct |
15 |
Correct |
0 ms |
340 KB |
Output is correct |
16 |
Correct |
0 ms |
212 KB |
Output is correct |
17 |
Correct |
26 ms |
852 KB |
Output is correct |
18 |
Correct |
22 ms |
900 KB |
Output is correct |
19 |
Correct |
22 ms |
892 KB |
Output is correct |
20 |
Correct |
19 ms |
904 KB |
Output is correct |
21 |
Correct |
24 ms |
852 KB |
Output is correct |
22 |
Correct |
25 ms |
852 KB |
Output is correct |
23 |
Correct |
24 ms |
852 KB |
Output is correct |
24 |
Correct |
6 ms |
852 KB |
Output is correct |
25 |
Correct |
780 ms |
2068 KB |
Output is correct |
26 |
Correct |
781 ms |
2072 KB |
Output is correct |
27 |
Correct |
773 ms |
2044 KB |
Output is correct |
28 |
Correct |
692 ms |
2048 KB |
Output is correct |
29 |
Correct |
969 ms |
2068 KB |
Output is correct |
30 |
Correct |
961 ms |
2124 KB |
Output is correct |
31 |
Correct |
920 ms |
2068 KB |
Output is correct |
32 |
Correct |
882 ms |
2048 KB |
Output is correct |
33 |
Incorrect |
15 ms |
10580 KB |
Output isn't correct |
34 |
Halted |
0 ms |
0 KB |
- |