#include "rect.h"
#include<iostream>
#include<vector>
#include<bitset>
using namespace std;
using ll = long long;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
#define forsn(i, s, n) for(int i=s; i<(int)n; ++i)
#define dforn(i, n) for(int i=n-1; i>=0; --i)
#define dforsn(i, s, n) for(int i=n-1; i>=s; --i)
#define PB push_back
const int MAXN = 710;
bitset<MAXN> mask[MAXN][MAXN]; // column, start row
bitset<MAXN> one("1"), full;
int n, m, arr[MAXN][MAXN], brr[MAXN][MAXN];
int far[MAXN][MAXN][MAXN]; // row, l, r
void calc1(){
dforn(row, n){
forsn(i, 1, m-1){
int mx = -1;
forsn(j, i, m-1){
mx = max(mx, arr[row][j]);
if(mx<arr[row][i-1] && mx<arr[row][j+1]){
far[row][i][j]=far[row+1][i][j];
}
else far[row][i][j]=row;
}
}
}
}
void calc2(){
forn(col, m){
forsn(i, 1, n-1){
int mx = -1;
forsn(j, i, n-1){
mx = max(mx, brr[col][j]);
if(mx<brr[col][i-1] && mx<brr[col][j+1]){
mask[i][col]|=(one<<j);
}
}
}
}
}
long long count_rectangles(std::vector<std::vector<int> > a) {
n=(int)a.size(), m=(int)a.front().size();
forn(i, 800) full|=(one<<i);
forn(i, n) forn(j, m) brr[j][i]=arr[i][j]=a[i][j];
forn(i, m) forn(j, m) far[n][i][j]=n;
calc1();
calc2();
ll ans=0;
forsn(row, 1, n-1){
forsn(i, 1, m-1){
bitset<MAXN> bt=full;
forsn(j, i, m-1){
bt&=mask[row][j];
ans+=(bt&(~(full<<far[row][i][j]))).count();
}
}
}
return ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
2 ms |
3156 KB |
Output is correct |
3 |
Correct |
2 ms |
3264 KB |
Output is correct |
4 |
Correct |
2 ms |
3156 KB |
Output is correct |
5 |
Correct |
2 ms |
3028 KB |
Output is correct |
6 |
Correct |
2 ms |
3156 KB |
Output is correct |
7 |
Correct |
1 ms |
1620 KB |
Output is correct |
8 |
Correct |
2 ms |
1492 KB |
Output is correct |
9 |
Correct |
2 ms |
3156 KB |
Output is correct |
10 |
Correct |
2 ms |
3156 KB |
Output is correct |
11 |
Correct |
2 ms |
3156 KB |
Output is correct |
12 |
Correct |
2 ms |
3156 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
568 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
312 KB |
Output is correct |
19 |
Correct |
2 ms |
3156 KB |
Output is correct |
20 |
Correct |
1 ms |
1620 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
2 ms |
3156 KB |
Output is correct |
3 |
Correct |
2 ms |
3264 KB |
Output is correct |
4 |
Correct |
2 ms |
3156 KB |
Output is correct |
5 |
Correct |
2 ms |
3028 KB |
Output is correct |
6 |
Correct |
2 ms |
3156 KB |
Output is correct |
7 |
Correct |
1 ms |
1620 KB |
Output is correct |
8 |
Correct |
2 ms |
1492 KB |
Output is correct |
9 |
Correct |
2 ms |
3156 KB |
Output is correct |
10 |
Correct |
2 ms |
3156 KB |
Output is correct |
11 |
Correct |
2 ms |
3156 KB |
Output is correct |
12 |
Correct |
2 ms |
3156 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
568 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
312 KB |
Output is correct |
19 |
Correct |
2 ms |
3156 KB |
Output is correct |
20 |
Correct |
1 ms |
1620 KB |
Output is correct |
21 |
Correct |
1 ms |
340 KB |
Output is correct |
22 |
Correct |
23 ms |
19636 KB |
Output is correct |
23 |
Correct |
24 ms |
19668 KB |
Output is correct |
24 |
Correct |
23 ms |
19668 KB |
Output is correct |
25 |
Correct |
23 ms |
19540 KB |
Output is correct |
26 |
Correct |
23 ms |
19364 KB |
Output is correct |
27 |
Correct |
23 ms |
19404 KB |
Output is correct |
28 |
Correct |
33 ms |
19540 KB |
Output is correct |
29 |
Correct |
8 ms |
10196 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
2 ms |
3156 KB |
Output is correct |
3 |
Correct |
2 ms |
3264 KB |
Output is correct |
4 |
Correct |
2 ms |
3156 KB |
Output is correct |
5 |
Correct |
2 ms |
3028 KB |
Output is correct |
6 |
Correct |
2 ms |
3156 KB |
Output is correct |
7 |
Correct |
1 ms |
1620 KB |
Output is correct |
8 |
Correct |
2 ms |
1492 KB |
Output is correct |
9 |
Correct |
2 ms |
3156 KB |
Output is correct |
10 |
Correct |
2 ms |
3156 KB |
Output is correct |
11 |
Correct |
2 ms |
3156 KB |
Output is correct |
12 |
Correct |
2 ms |
3156 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
568 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
23 ms |
19636 KB |
Output is correct |
18 |
Correct |
24 ms |
19668 KB |
Output is correct |
19 |
Correct |
23 ms |
19668 KB |
Output is correct |
20 |
Correct |
23 ms |
19540 KB |
Output is correct |
21 |
Correct |
23 ms |
19364 KB |
Output is correct |
22 |
Correct |
23 ms |
19404 KB |
Output is correct |
23 |
Correct |
33 ms |
19540 KB |
Output is correct |
24 |
Correct |
8 ms |
10196 KB |
Output is correct |
25 |
Correct |
1 ms |
340 KB |
Output is correct |
26 |
Correct |
1 ms |
312 KB |
Output is correct |
27 |
Correct |
2 ms |
3156 KB |
Output is correct |
28 |
Correct |
1 ms |
1620 KB |
Output is correct |
29 |
Correct |
1 ms |
340 KB |
Output is correct |
30 |
Correct |
315 ms |
118036 KB |
Output is correct |
31 |
Correct |
298 ms |
117928 KB |
Output is correct |
32 |
Correct |
297 ms |
118060 KB |
Output is correct |
33 |
Correct |
301 ms |
117956 KB |
Output is correct |
34 |
Correct |
303 ms |
117836 KB |
Output is correct |
35 |
Correct |
307 ms |
117964 KB |
Output is correct |
36 |
Correct |
300 ms |
117852 KB |
Output is correct |
37 |
Correct |
327 ms |
116300 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
2 ms |
3156 KB |
Output is correct |
3 |
Correct |
2 ms |
3264 KB |
Output is correct |
4 |
Correct |
2 ms |
3156 KB |
Output is correct |
5 |
Correct |
2 ms |
3028 KB |
Output is correct |
6 |
Correct |
2 ms |
3156 KB |
Output is correct |
7 |
Correct |
1 ms |
1620 KB |
Output is correct |
8 |
Correct |
2 ms |
1492 KB |
Output is correct |
9 |
Correct |
2 ms |
3156 KB |
Output is correct |
10 |
Correct |
2 ms |
3156 KB |
Output is correct |
11 |
Correct |
2 ms |
3156 KB |
Output is correct |
12 |
Correct |
2 ms |
3156 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
568 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
23 ms |
19636 KB |
Output is correct |
18 |
Correct |
24 ms |
19668 KB |
Output is correct |
19 |
Correct |
23 ms |
19668 KB |
Output is correct |
20 |
Correct |
23 ms |
19540 KB |
Output is correct |
21 |
Correct |
23 ms |
19364 KB |
Output is correct |
22 |
Correct |
23 ms |
19404 KB |
Output is correct |
23 |
Correct |
33 ms |
19540 KB |
Output is correct |
24 |
Correct |
8 ms |
10196 KB |
Output is correct |
25 |
Correct |
315 ms |
118036 KB |
Output is correct |
26 |
Correct |
298 ms |
117928 KB |
Output is correct |
27 |
Correct |
297 ms |
118060 KB |
Output is correct |
28 |
Correct |
301 ms |
117956 KB |
Output is correct |
29 |
Correct |
303 ms |
117836 KB |
Output is correct |
30 |
Correct |
307 ms |
117964 KB |
Output is correct |
31 |
Correct |
300 ms |
117852 KB |
Output is correct |
32 |
Correct |
327 ms |
116300 KB |
Output is correct |
33 |
Correct |
1 ms |
340 KB |
Output is correct |
34 |
Correct |
1 ms |
312 KB |
Output is correct |
35 |
Correct |
2 ms |
3156 KB |
Output is correct |
36 |
Correct |
1 ms |
1620 KB |
Output is correct |
37 |
Correct |
1 ms |
340 KB |
Output is correct |
38 |
Runtime error |
570 ms |
1048576 KB |
Execution killed with signal 9 |
39 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
202 ms |
20244 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
312 KB |
Output is correct |
3 |
Correct |
2 ms |
3156 KB |
Output is correct |
4 |
Correct |
1 ms |
1620 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
6 |
Correct |
1 ms |
596 KB |
Output is correct |
7 |
Runtime error |
60 ms |
34844 KB |
Execution killed with signal 11 |
8 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
468 KB |
Output is correct |
2 |
Correct |
2 ms |
3156 KB |
Output is correct |
3 |
Correct |
2 ms |
3264 KB |
Output is correct |
4 |
Correct |
2 ms |
3156 KB |
Output is correct |
5 |
Correct |
2 ms |
3028 KB |
Output is correct |
6 |
Correct |
2 ms |
3156 KB |
Output is correct |
7 |
Correct |
1 ms |
1620 KB |
Output is correct |
8 |
Correct |
2 ms |
1492 KB |
Output is correct |
9 |
Correct |
2 ms |
3156 KB |
Output is correct |
10 |
Correct |
2 ms |
3156 KB |
Output is correct |
11 |
Correct |
2 ms |
3156 KB |
Output is correct |
12 |
Correct |
2 ms |
3156 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
1 ms |
568 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
23 ms |
19636 KB |
Output is correct |
18 |
Correct |
24 ms |
19668 KB |
Output is correct |
19 |
Correct |
23 ms |
19668 KB |
Output is correct |
20 |
Correct |
23 ms |
19540 KB |
Output is correct |
21 |
Correct |
23 ms |
19364 KB |
Output is correct |
22 |
Correct |
23 ms |
19404 KB |
Output is correct |
23 |
Correct |
33 ms |
19540 KB |
Output is correct |
24 |
Correct |
8 ms |
10196 KB |
Output is correct |
25 |
Correct |
315 ms |
118036 KB |
Output is correct |
26 |
Correct |
298 ms |
117928 KB |
Output is correct |
27 |
Correct |
297 ms |
118060 KB |
Output is correct |
28 |
Correct |
301 ms |
117956 KB |
Output is correct |
29 |
Correct |
303 ms |
117836 KB |
Output is correct |
30 |
Correct |
307 ms |
117964 KB |
Output is correct |
31 |
Correct |
300 ms |
117852 KB |
Output is correct |
32 |
Correct |
327 ms |
116300 KB |
Output is correct |
33 |
Runtime error |
570 ms |
1048576 KB |
Execution killed with signal 9 |
34 |
Halted |
0 ms |
0 KB |
- |