# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
143965 |
2019-08-15T13:50:40 Z |
Bodo171 |
Rectangles (IOI19_rect) |
C++14 |
|
1612 ms |
1048576 KB |
#include "rect.h"
#include <vector>
#include <iostream>
using namespace std;
vector<vector<int> > a,sum,secvl,secvc;
int n,m,i,j,mx;
int solve_n_mic()
{
int ans=0;
if(n<=2) return 0;
for(i=1;i<=m-2;i++)
{
bool bun=(a[1][i]<a[1][i-1]&&a[1][i]<a[0][i]&&a[1][i]<a[2][i]);
mx=a[1][i];
for(j=i;j<=m-2;j++)
{
bun&=(a[1][j]<a[0][j]&&a[1][j]<a[2][j]);
mx=max(mx,a[1][j]);
if(bun&&mx<a[1][i-1]&&mx<a[1][j+1])
ans++;
}
}
return ans;
}
int S(int xl,int yl,int xr,int yr)
{
int ret=sum[xr][yr];
if(xl) ret-=sum[xl-1][yr];
if(yl) ret-=sum[xr][yl-1];
if(xl&&yl) ret+=sum[xl-1][yl-1];
return ret;
}
int solve01()
{
int ans=0;
sum=a;secvl=a;secvc=a;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i) sum[i][j]+=sum[i-1][j];
if(j) sum[i][j]+=sum[i][j-1];
if(i&&j) sum[i][j]-=sum[i-1][j-1];
secvl[i][j]=secvc[i][j]=0;
}
}
int L,C;
for(i=1;i<n-1;i++)
{
for(j=1;j<m-1;j++)
{
if(a[i][j]==0)
{
secvl[i][j]=secvl[i-1][j]+1;
secvc[i][j]=secvc[i][j-1]+1;
}
L=secvl[i][j];C=secvc[i][j];
if(a[i][j]==0&&S(i-L+1,j-C+1,i,j)==0&&S(i-L,j-C,i+1,j+1)+(1-a[i-L][j-C])+(1-a[i-L][j+1])+(1-a[i+1][j-C])+(1-a[i+1][j+1])==2*(L+C+4)-4)
ans++;
}
}
return ans;
}
short l[705][705][705],c[705][705][705];
int brut()
{
for(int i=1;i<=n-2;i++)
{
for(int j=1;j<=m-2;j++)
{
mx=a[i][j];
for(int k=j;k<=m-2;k++)
{
mx=max(mx,a[i][k]);
l[i][j][k]=((a[i][j-1]>mx&&a[i][k+1]>mx));
if(l[i][j][k])
l[i][j][k]+=l[i-1][j][k];
}
}
}
for(int i=1;i<=m-2;i++)
{
for(int j=1;j<=n-2;j++)
{
mx=a[j][i];
for(int k=j;k<=n-2;k++)
{
mx=max(mx,a[k][i]);
c[i][j][k]=((a[j-1][i]>mx&&a[k+1][i]>mx));
if(c[i][j][k])
c[i][j][k]+=c[i-1][j][k];
}
}
}
int ans=0,l1,l2,c1,c2;
for(l1=1;l1<=n-2;l1++)
for(l2=l1;l2<=n-2;l2++)
for(c1=1;c1<=m-2;c1++)
for(c2=c1;c2<=m-2;c2++)
ans+=((l2-l[l2][c1][c2]<l1)&&(c2-c[c2][l1][l2]<c1));
return ans;
}
long long count_rectangles(vector<vector<int> > att) {
a=att;
n=a.size();m=a[0].size();
int M=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
M=max(M,a[i][j]);
if(n<=3)
return solve_n_mic();
if(M<=1)
return solve01();
return brut();
}
Compilation message
rect.cpp: In function 'long long int count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:112:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if(M<=1)
^~
rect.cpp:114:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
return brut();
^~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
2680 KB |
Output is correct |
3 |
Correct |
5 ms |
2808 KB |
Output is correct |
4 |
Correct |
4 ms |
2680 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
4 ms |
2684 KB |
Output is correct |
7 |
Correct |
3 ms |
1400 KB |
Output is correct |
8 |
Correct |
3 ms |
1272 KB |
Output is correct |
9 |
Correct |
4 ms |
2680 KB |
Output is correct |
10 |
Correct |
4 ms |
2680 KB |
Output is correct |
11 |
Correct |
4 ms |
2680 KB |
Output is correct |
12 |
Correct |
4 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
256 KB |
Output is correct |
14 |
Correct |
2 ms |
372 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
256 KB |
Output is correct |
17 |
Correct |
2 ms |
256 KB |
Output is correct |
18 |
Correct |
2 ms |
256 KB |
Output is correct |
19 |
Correct |
2 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
376 KB |
Output is correct |
21 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
2680 KB |
Output is correct |
3 |
Correct |
5 ms |
2808 KB |
Output is correct |
4 |
Correct |
4 ms |
2680 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
4 ms |
2684 KB |
Output is correct |
7 |
Correct |
3 ms |
1400 KB |
Output is correct |
8 |
Correct |
3 ms |
1272 KB |
Output is correct |
9 |
Correct |
4 ms |
2680 KB |
Output is correct |
10 |
Correct |
4 ms |
2680 KB |
Output is correct |
11 |
Correct |
4 ms |
2680 KB |
Output is correct |
12 |
Correct |
4 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
256 KB |
Output is correct |
14 |
Correct |
2 ms |
372 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
256 KB |
Output is correct |
17 |
Correct |
34 ms |
17940 KB |
Output is correct |
18 |
Correct |
35 ms |
17864 KB |
Output is correct |
19 |
Correct |
33 ms |
17832 KB |
Output is correct |
20 |
Correct |
33 ms |
17948 KB |
Output is correct |
21 |
Correct |
32 ms |
17720 KB |
Output is correct |
22 |
Correct |
33 ms |
17724 KB |
Output is correct |
23 |
Correct |
32 ms |
17936 KB |
Output is correct |
24 |
Correct |
14 ms |
9032 KB |
Output is correct |
25 |
Correct |
2 ms |
256 KB |
Output is correct |
26 |
Correct |
2 ms |
256 KB |
Output is correct |
27 |
Correct |
2 ms |
376 KB |
Output is correct |
28 |
Correct |
2 ms |
376 KB |
Output is correct |
29 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
2680 KB |
Output is correct |
3 |
Correct |
5 ms |
2808 KB |
Output is correct |
4 |
Correct |
4 ms |
2680 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
4 ms |
2684 KB |
Output is correct |
7 |
Correct |
3 ms |
1400 KB |
Output is correct |
8 |
Correct |
3 ms |
1272 KB |
Output is correct |
9 |
Correct |
4 ms |
2680 KB |
Output is correct |
10 |
Correct |
4 ms |
2680 KB |
Output is correct |
11 |
Correct |
4 ms |
2680 KB |
Output is correct |
12 |
Correct |
4 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
256 KB |
Output is correct |
14 |
Correct |
2 ms |
372 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
256 KB |
Output is correct |
17 |
Correct |
34 ms |
17940 KB |
Output is correct |
18 |
Correct |
35 ms |
17864 KB |
Output is correct |
19 |
Correct |
33 ms |
17832 KB |
Output is correct |
20 |
Correct |
33 ms |
17948 KB |
Output is correct |
21 |
Correct |
32 ms |
17720 KB |
Output is correct |
22 |
Correct |
33 ms |
17724 KB |
Output is correct |
23 |
Correct |
32 ms |
17936 KB |
Output is correct |
24 |
Correct |
14 ms |
9032 KB |
Output is correct |
25 |
Correct |
911 ms |
110768 KB |
Output is correct |
26 |
Correct |
870 ms |
110768 KB |
Output is correct |
27 |
Correct |
919 ms |
110764 KB |
Output is correct |
28 |
Correct |
838 ms |
110772 KB |
Output is correct |
29 |
Correct |
856 ms |
110768 KB |
Output is correct |
30 |
Correct |
836 ms |
110768 KB |
Output is correct |
31 |
Correct |
867 ms |
110768 KB |
Output is correct |
32 |
Correct |
947 ms |
109116 KB |
Output is correct |
33 |
Correct |
2 ms |
256 KB |
Output is correct |
34 |
Correct |
2 ms |
256 KB |
Output is correct |
35 |
Correct |
2 ms |
376 KB |
Output is correct |
36 |
Correct |
2 ms |
376 KB |
Output is correct |
37 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
2680 KB |
Output is correct |
3 |
Correct |
5 ms |
2808 KB |
Output is correct |
4 |
Correct |
4 ms |
2680 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
4 ms |
2684 KB |
Output is correct |
7 |
Correct |
3 ms |
1400 KB |
Output is correct |
8 |
Correct |
3 ms |
1272 KB |
Output is correct |
9 |
Correct |
4 ms |
2680 KB |
Output is correct |
10 |
Correct |
4 ms |
2680 KB |
Output is correct |
11 |
Correct |
4 ms |
2680 KB |
Output is correct |
12 |
Correct |
4 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
256 KB |
Output is correct |
14 |
Correct |
2 ms |
372 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
256 KB |
Output is correct |
17 |
Correct |
34 ms |
17940 KB |
Output is correct |
18 |
Correct |
35 ms |
17864 KB |
Output is correct |
19 |
Correct |
33 ms |
17832 KB |
Output is correct |
20 |
Correct |
33 ms |
17948 KB |
Output is correct |
21 |
Correct |
32 ms |
17720 KB |
Output is correct |
22 |
Correct |
33 ms |
17724 KB |
Output is correct |
23 |
Correct |
32 ms |
17936 KB |
Output is correct |
24 |
Correct |
14 ms |
9032 KB |
Output is correct |
25 |
Correct |
911 ms |
110768 KB |
Output is correct |
26 |
Correct |
870 ms |
110768 KB |
Output is correct |
27 |
Correct |
919 ms |
110764 KB |
Output is correct |
28 |
Correct |
838 ms |
110772 KB |
Output is correct |
29 |
Correct |
856 ms |
110768 KB |
Output is correct |
30 |
Correct |
836 ms |
110768 KB |
Output is correct |
31 |
Correct |
867 ms |
110768 KB |
Output is correct |
32 |
Correct |
947 ms |
109116 KB |
Output is correct |
33 |
Runtime error |
1612 ms |
1048576 KB |
Execution killed with signal 9 (could be triggered by violating memory limits) |
34 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
380 KB |
Output is correct |
2 |
Correct |
9 ms |
444 KB |
Output is correct |
3 |
Correct |
9 ms |
376 KB |
Output is correct |
4 |
Correct |
2 ms |
256 KB |
Output is correct |
5 |
Correct |
11 ms |
376 KB |
Output is correct |
6 |
Correct |
11 ms |
376 KB |
Output is correct |
7 |
Correct |
11 ms |
476 KB |
Output is correct |
8 |
Correct |
10 ms |
376 KB |
Output is correct |
9 |
Correct |
10 ms |
372 KB |
Output is correct |
10 |
Correct |
2 ms |
376 KB |
Output is correct |
11 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
234 ms |
67960 KB |
Output is correct |
3 |
Correct |
494 ms |
146952 KB |
Output is correct |
4 |
Correct |
525 ms |
147724 KB |
Output is correct |
5 |
Correct |
513 ms |
147764 KB |
Output is correct |
6 |
Correct |
249 ms |
73208 KB |
Output is correct |
7 |
Correct |
539 ms |
138672 KB |
Output is correct |
8 |
Correct |
530 ms |
147760 KB |
Output is correct |
9 |
Correct |
2 ms |
256 KB |
Output is correct |
10 |
Correct |
2 ms |
256 KB |
Output is correct |
11 |
Correct |
2 ms |
376 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
5 ms |
2680 KB |
Output is correct |
3 |
Correct |
5 ms |
2808 KB |
Output is correct |
4 |
Correct |
4 ms |
2680 KB |
Output is correct |
5 |
Correct |
2 ms |
376 KB |
Output is correct |
6 |
Correct |
4 ms |
2684 KB |
Output is correct |
7 |
Correct |
3 ms |
1400 KB |
Output is correct |
8 |
Correct |
3 ms |
1272 KB |
Output is correct |
9 |
Correct |
4 ms |
2680 KB |
Output is correct |
10 |
Correct |
4 ms |
2680 KB |
Output is correct |
11 |
Correct |
4 ms |
2680 KB |
Output is correct |
12 |
Correct |
4 ms |
2680 KB |
Output is correct |
13 |
Correct |
2 ms |
256 KB |
Output is correct |
14 |
Correct |
2 ms |
372 KB |
Output is correct |
15 |
Correct |
2 ms |
376 KB |
Output is correct |
16 |
Correct |
2 ms |
256 KB |
Output is correct |
17 |
Correct |
34 ms |
17940 KB |
Output is correct |
18 |
Correct |
35 ms |
17864 KB |
Output is correct |
19 |
Correct |
33 ms |
17832 KB |
Output is correct |
20 |
Correct |
33 ms |
17948 KB |
Output is correct |
21 |
Correct |
32 ms |
17720 KB |
Output is correct |
22 |
Correct |
33 ms |
17724 KB |
Output is correct |
23 |
Correct |
32 ms |
17936 KB |
Output is correct |
24 |
Correct |
14 ms |
9032 KB |
Output is correct |
25 |
Correct |
911 ms |
110768 KB |
Output is correct |
26 |
Correct |
870 ms |
110768 KB |
Output is correct |
27 |
Correct |
919 ms |
110764 KB |
Output is correct |
28 |
Correct |
838 ms |
110772 KB |
Output is correct |
29 |
Correct |
856 ms |
110768 KB |
Output is correct |
30 |
Correct |
836 ms |
110768 KB |
Output is correct |
31 |
Correct |
867 ms |
110768 KB |
Output is correct |
32 |
Correct |
947 ms |
109116 KB |
Output is correct |
33 |
Runtime error |
1612 ms |
1048576 KB |
Execution killed with signal 9 (could be triggered by violating memory limits) |
34 |
Halted |
0 ms |
0 KB |
- |