#include"rect.h"
#include<bits/stdc++.h>
#ifdef EVAL
#else
#include"grader.cpp"
#endif
using namespace std;
int b[2505][2505],n,m;
vector<vector<int>>a;
bool check(int r1,int c1,int r2,int c2){
for(int i=r1;i<=r2;i++)
for(int j=c1;j<=c2;j++)
if(a[i][j]>=min(min(a[i][c1-1],a[i][c2+1]),min(a[r1-1][j],a[r2+1][j])))return 0;
return 1;
}
int get(int x,int y,int x2,int y2){
int sum=b[x2][y2];
if(x&&y)sum+=b[x-1][y-1];
if(x)sum-=b[x-1][y2];
if(y)sum-=b[x2][y-1];
return sum;
}
long long count_rectangles(vector<vector<int>>a){
n=a.size(),m=a[0].size();
::a=a;
long long res=0;
if((n<=200&&m<=200)||(n<=3)){
for(int i=1;i<n-1;i++)
for(int j=1;j<m-1;j++)
for(int I=i;I<n-1;I++)
for(int J=j;J<m-1;J++)res+=check(i,j,I,J);
}else{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
b[i][j]=a[i][j];
if(i&&j)b[i][j]-=b[i-1][j-1];
if(i)b[i][j]+=b[i-1][j];
if(j)b[i][j]+=b[i][j-1];
}
for(int i=1;i+1<n;i++)
for(int j=1;j+1<m;j++)
if(!a[i][j]&&a[i][j-1]&&a[i-1][j]){
int x=i;
while(x+1<n&&!a[x+1][j])x++;
int y=j;
while(y+1<m&&!a[i][y+1])y++;
if(get(i,j,x,y)==0&&get(i-1,j,i-1,y)==y-j+1&&get(x+1,j,x+1,y)==y-j+1&&get(i,j-1,x,j-1)==x-i+1&&get(i,y+1,x,y+1)==x-i+1)res++;
}
}
return res;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
2 ms |
364 KB |
Output is correct |
3 |
Correct |
2 ms |
364 KB |
Output is correct |
4 |
Correct |
2 ms |
364 KB |
Output is correct |
5 |
Correct |
2 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
364 KB |
Output is correct |
9 |
Correct |
2 ms |
364 KB |
Output is correct |
10 |
Correct |
2 ms |
364 KB |
Output is correct |
11 |
Correct |
2 ms |
364 KB |
Output is correct |
12 |
Correct |
2 ms |
364 KB |
Output is correct |
13 |
Correct |
0 ms |
364 KB |
Output is correct |
14 |
Correct |
0 ms |
364 KB |
Output is correct |
15 |
Correct |
0 ms |
364 KB |
Output is correct |
16 |
Correct |
0 ms |
364 KB |
Output is correct |
17 |
Correct |
0 ms |
364 KB |
Output is correct |
18 |
Correct |
0 ms |
364 KB |
Output is correct |
19 |
Correct |
2 ms |
364 KB |
Output is correct |
20 |
Correct |
1 ms |
364 KB |
Output is correct |
21 |
Correct |
0 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
2 ms |
364 KB |
Output is correct |
3 |
Correct |
2 ms |
364 KB |
Output is correct |
4 |
Correct |
2 ms |
364 KB |
Output is correct |
5 |
Correct |
2 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
364 KB |
Output is correct |
9 |
Correct |
2 ms |
364 KB |
Output is correct |
10 |
Correct |
2 ms |
364 KB |
Output is correct |
11 |
Correct |
2 ms |
364 KB |
Output is correct |
12 |
Correct |
2 ms |
364 KB |
Output is correct |
13 |
Correct |
0 ms |
364 KB |
Output is correct |
14 |
Correct |
0 ms |
364 KB |
Output is correct |
15 |
Correct |
0 ms |
364 KB |
Output is correct |
16 |
Correct |
0 ms |
364 KB |
Output is correct |
17 |
Correct |
90 ms |
364 KB |
Output is correct |
18 |
Correct |
94 ms |
364 KB |
Output is correct |
19 |
Correct |
90 ms |
492 KB |
Output is correct |
20 |
Correct |
86 ms |
364 KB |
Output is correct |
21 |
Correct |
83 ms |
364 KB |
Output is correct |
22 |
Correct |
83 ms |
364 KB |
Output is correct |
23 |
Correct |
85 ms |
364 KB |
Output is correct |
24 |
Correct |
21 ms |
364 KB |
Output is correct |
25 |
Correct |
0 ms |
364 KB |
Output is correct |
26 |
Correct |
0 ms |
364 KB |
Output is correct |
27 |
Correct |
2 ms |
364 KB |
Output is correct |
28 |
Correct |
1 ms |
364 KB |
Output is correct |
29 |
Correct |
0 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
2 ms |
364 KB |
Output is correct |
3 |
Correct |
2 ms |
364 KB |
Output is correct |
4 |
Correct |
2 ms |
364 KB |
Output is correct |
5 |
Correct |
2 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
364 KB |
Output is correct |
9 |
Correct |
2 ms |
364 KB |
Output is correct |
10 |
Correct |
2 ms |
364 KB |
Output is correct |
11 |
Correct |
2 ms |
364 KB |
Output is correct |
12 |
Correct |
2 ms |
364 KB |
Output is correct |
13 |
Correct |
0 ms |
364 KB |
Output is correct |
14 |
Correct |
0 ms |
364 KB |
Output is correct |
15 |
Correct |
0 ms |
364 KB |
Output is correct |
16 |
Correct |
0 ms |
364 KB |
Output is correct |
17 |
Correct |
90 ms |
364 KB |
Output is correct |
18 |
Correct |
94 ms |
364 KB |
Output is correct |
19 |
Correct |
90 ms |
492 KB |
Output is correct |
20 |
Correct |
86 ms |
364 KB |
Output is correct |
21 |
Correct |
83 ms |
364 KB |
Output is correct |
22 |
Correct |
83 ms |
364 KB |
Output is correct |
23 |
Correct |
85 ms |
364 KB |
Output is correct |
24 |
Correct |
21 ms |
364 KB |
Output is correct |
25 |
Correct |
3602 ms |
876 KB |
Output is correct |
26 |
Correct |
3609 ms |
876 KB |
Output is correct |
27 |
Correct |
3600 ms |
876 KB |
Output is correct |
28 |
Correct |
3305 ms |
868 KB |
Output is correct |
29 |
Correct |
3479 ms |
900 KB |
Output is correct |
30 |
Correct |
3454 ms |
868 KB |
Output is correct |
31 |
Correct |
3418 ms |
748 KB |
Output is correct |
32 |
Correct |
3327 ms |
876 KB |
Output is correct |
33 |
Correct |
0 ms |
364 KB |
Output is correct |
34 |
Correct |
0 ms |
364 KB |
Output is correct |
35 |
Correct |
2 ms |
364 KB |
Output is correct |
36 |
Correct |
1 ms |
364 KB |
Output is correct |
37 |
Correct |
0 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
2 ms |
364 KB |
Output is correct |
3 |
Correct |
2 ms |
364 KB |
Output is correct |
4 |
Correct |
2 ms |
364 KB |
Output is correct |
5 |
Correct |
2 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
364 KB |
Output is correct |
9 |
Correct |
2 ms |
364 KB |
Output is correct |
10 |
Correct |
2 ms |
364 KB |
Output is correct |
11 |
Correct |
2 ms |
364 KB |
Output is correct |
12 |
Correct |
2 ms |
364 KB |
Output is correct |
13 |
Correct |
0 ms |
364 KB |
Output is correct |
14 |
Correct |
0 ms |
364 KB |
Output is correct |
15 |
Correct |
0 ms |
364 KB |
Output is correct |
16 |
Correct |
0 ms |
364 KB |
Output is correct |
17 |
Correct |
90 ms |
364 KB |
Output is correct |
18 |
Correct |
94 ms |
364 KB |
Output is correct |
19 |
Correct |
90 ms |
492 KB |
Output is correct |
20 |
Correct |
86 ms |
364 KB |
Output is correct |
21 |
Correct |
83 ms |
364 KB |
Output is correct |
22 |
Correct |
83 ms |
364 KB |
Output is correct |
23 |
Correct |
85 ms |
364 KB |
Output is correct |
24 |
Correct |
21 ms |
364 KB |
Output is correct |
25 |
Correct |
3602 ms |
876 KB |
Output is correct |
26 |
Correct |
3609 ms |
876 KB |
Output is correct |
27 |
Correct |
3600 ms |
876 KB |
Output is correct |
28 |
Correct |
3305 ms |
868 KB |
Output is correct |
29 |
Correct |
3479 ms |
900 KB |
Output is correct |
30 |
Correct |
3454 ms |
868 KB |
Output is correct |
31 |
Correct |
3418 ms |
748 KB |
Output is correct |
32 |
Correct |
3327 ms |
876 KB |
Output is correct |
33 |
Incorrect |
20 ms |
10860 KB |
Output isn't correct |
34 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
30 ms |
364 KB |
Output is correct |
2 |
Correct |
22 ms |
492 KB |
Output is correct |
3 |
Correct |
26 ms |
492 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
30 ms |
492 KB |
Output is correct |
6 |
Correct |
30 ms |
492 KB |
Output is correct |
7 |
Correct |
31 ms |
492 KB |
Output is correct |
8 |
Correct |
29 ms |
492 KB |
Output is correct |
9 |
Correct |
31 ms |
492 KB |
Output is correct |
10 |
Correct |
1 ms |
364 KB |
Output is correct |
11 |
Correct |
1 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
91 ms |
46316 KB |
Output is correct |
3 |
Correct |
194 ms |
98156 KB |
Output is correct |
4 |
Correct |
191 ms |
98540 KB |
Output is correct |
5 |
Correct |
195 ms |
98540 KB |
Output is correct |
6 |
Correct |
65 ms |
48748 KB |
Output is correct |
7 |
Correct |
125 ms |
93932 KB |
Output is correct |
8 |
Correct |
130 ms |
98540 KB |
Output is correct |
9 |
Correct |
0 ms |
364 KB |
Output is correct |
10 |
Correct |
0 ms |
364 KB |
Output is correct |
11 |
Correct |
2 ms |
364 KB |
Output is correct |
12 |
Correct |
1 ms |
364 KB |
Output is correct |
13 |
Correct |
0 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
2 ms |
364 KB |
Output is correct |
3 |
Correct |
2 ms |
364 KB |
Output is correct |
4 |
Correct |
2 ms |
364 KB |
Output is correct |
5 |
Correct |
2 ms |
364 KB |
Output is correct |
6 |
Correct |
2 ms |
364 KB |
Output is correct |
7 |
Correct |
1 ms |
364 KB |
Output is correct |
8 |
Correct |
1 ms |
364 KB |
Output is correct |
9 |
Correct |
2 ms |
364 KB |
Output is correct |
10 |
Correct |
2 ms |
364 KB |
Output is correct |
11 |
Correct |
2 ms |
364 KB |
Output is correct |
12 |
Correct |
2 ms |
364 KB |
Output is correct |
13 |
Correct |
0 ms |
364 KB |
Output is correct |
14 |
Correct |
0 ms |
364 KB |
Output is correct |
15 |
Correct |
0 ms |
364 KB |
Output is correct |
16 |
Correct |
0 ms |
364 KB |
Output is correct |
17 |
Correct |
90 ms |
364 KB |
Output is correct |
18 |
Correct |
94 ms |
364 KB |
Output is correct |
19 |
Correct |
90 ms |
492 KB |
Output is correct |
20 |
Correct |
86 ms |
364 KB |
Output is correct |
21 |
Correct |
83 ms |
364 KB |
Output is correct |
22 |
Correct |
83 ms |
364 KB |
Output is correct |
23 |
Correct |
85 ms |
364 KB |
Output is correct |
24 |
Correct |
21 ms |
364 KB |
Output is correct |
25 |
Correct |
3602 ms |
876 KB |
Output is correct |
26 |
Correct |
3609 ms |
876 KB |
Output is correct |
27 |
Correct |
3600 ms |
876 KB |
Output is correct |
28 |
Correct |
3305 ms |
868 KB |
Output is correct |
29 |
Correct |
3479 ms |
900 KB |
Output is correct |
30 |
Correct |
3454 ms |
868 KB |
Output is correct |
31 |
Correct |
3418 ms |
748 KB |
Output is correct |
32 |
Correct |
3327 ms |
876 KB |
Output is correct |
33 |
Incorrect |
20 ms |
10860 KB |
Output isn't correct |
34 |
Halted |
0 ms |
0 KB |
- |