# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
379162 | 2021-03-17T11:32:49 Z | Thistle | Rectangles (IOI19_rect) | C++14 | 5000 ms | 49516 KB |
#include "rect.h" #include<bits/stdc++.h> using namespace std; using ll=long long; using H=pair<ll, ll>; using vi=vector<ll>; #define vec vector #define rng(i,a,b) for(int (i)=(a);(i)<(b);(i)++) #define rep(i,n) rng((i),(0),(n)) #define fs first #define sc second #define all(a) (a).begin(),(a).end() #define siz(a) ll((a).size()) class sptable{ int n; vi lgt; vec<vi> dat; public: sptable(vec<int> v){ n=siz(v); lgt.assign(n+1,0); for(int i=2;i<=n;i++) lgt[i]=lgt[i>>1]+1; dat.assign(lgt[n]+1,vi(n)); rep(i,n) dat[0][i]=v[i]; rng(i,0,lgt[n]){ for(int j=0;j+(1<<(i+1))<=n;j++){ dat[i+1][j]=max(dat[i][j],dat[i][j+(1<<i)]); } } } sptable(){} ll get(int l,int r){ int k=lgt[r-l]; return max(dat[k][l],dat[k][r-(1<<k)]); } }; mt19937 rnd; vec<vec<int>>vv; ll gen(){ int n=rnd()%4+3,m=rnd()%4+3; vec<vec<int>>v(n,vec<int>(m)); rep(i,n)rep(j,m) v[i][j]=rnd()%5; ll ans=0; rep(i,n-2)rep(j,m-2){ rng(k,i+2,n)rng(t,j+2,m){ bool flag=1; rng(x,i+1,k)rng(y,j+1,t){ if(v[x][y]>=min({v[i][y],v[k][y],v[x][j],v[x][t]})) flag=0; } if(flag) ans++; } } vv=v; return ans; } void check(){ rep(i,1000){ ll ans=gen(); ll sol=count_rectangles(vv); if(ans!=sol){ cout<<siz(vv)<<" "<<siz(vv[0])<<endl; for(auto g:vv){ for(auto t:g)cout<<t<<" "; cout<<endl; } cout<<ans<<" "<<sol<<endl; break; } cout<<i<<endl; } } long long count_rectangles(std::vector<std::vector<int> > a) { int h=siz(a),w=siz(a[0]); int mxv=0; rep(i,h)rep(j,w) mxv=max(mxv,a[i][j]); if(mxv<=1){ ll ans=0; rep(i,h)rep(j,w){ if(a[i][j]==1) continue; queue<H>q; q.push(H{i,j}); int inf=10000; ll mnx=inf,mxx=-inf,mny=inf,mxy=-inf; vi dx={-1,1,0,0},dy={0,0,-1,1}; a[i][j]=1; int sum=0; while(!q.empty()){ H t=q.front();q.pop(); mnx=min(mnx,t.fs); mxx=max(mxx,t.fs); mny=min(mny,t.sc); mxy=max(mxy,t.sc); sum++; rep(z,4){ H k=H{t.fs+dx[z],t.sc+dy[z]}; if(k.fs<0||k.fs>=h||k.sc<0||k.sc>=w) continue; if(a[k.fs][k.sc]==0){ q.push(k); a[k.fs][k.sc]=1; } } } if(mnx==0||mny==0||mxx==h-1||mxy==w-1) continue; if(sum==(mxx-mnx+1)*(mxy-mny+1)){ ans++; } } return ans; } else{ ll ans=0; rep(i,h-2)rep(j,w-2){ vec<bool>could(w,1); int ed=w; vec<int>mx(w,0); rng(k,i+2,h){ bool flag=0;int mxh=0; for(int t=j+2;t<ed;t++){ int r=0; if(!could[t]) r=1; if(mxh<a[k-1][t-1]) mxh=a[k-1][t-1]; if(mx[t-1]<a[k-1][t-1]) mx[t-1]=a[k-1][t-1]; if(mxh>=a[k-1][t]){ could[t]=0; r=1; } if(mxh>=a[k-1][j]){ ed=t; r=1; } if(mx[t-1]>=a[k][t-1]) r=1,flag=1; if(mx[t-1]>=a[i][t-1]){ ed=t;r=2; } if(r==2) break; if(r==1||flag) continue; ans++; } } } return ans; } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 384 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 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 | 1 ms | 364 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 0 ms | 364 KB | Output is correct |
15 | Correct | 1 ms | 364 KB | Output is correct |
16 | Correct | 1 ms | 384 KB | Output is correct |
17 | Correct | 0 ms | 364 KB | Output is correct |
18 | Correct | 1 ms | 364 KB | Output is correct |
19 | Correct | 1 ms | 384 KB | Output is correct |
20 | Correct | 1 ms | 364 KB | Output is correct |
21 | Correct | 1 ms | 384 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 384 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 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 | 1 ms | 364 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 0 ms | 364 KB | Output is correct |
15 | Correct | 1 ms | 364 KB | Output is correct |
16 | Correct | 1 ms | 384 KB | Output is correct |
17 | Correct | 0 ms | 364 KB | Output is correct |
18 | Correct | 1 ms | 364 KB | Output is correct |
19 | Correct | 1 ms | 384 KB | Output is correct |
20 | Correct | 1 ms | 364 KB | Output is correct |
21 | Correct | 1 ms | 384 KB | Output is correct |
22 | Correct | 39 ms | 364 KB | Output is correct |
23 | Correct | 42 ms | 364 KB | Output is correct |
24 | Correct | 41 ms | 364 KB | Output is correct |
25 | Correct | 2 ms | 364 KB | Output is correct |
26 | Correct | 2 ms | 364 KB | Output is correct |
27 | Correct | 2 ms | 364 KB | Output is correct |
28 | Correct | 2 ms | 364 KB | Output is correct |
29 | Correct | 1 ms | 364 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 384 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 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 | 1 ms | 364 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 0 ms | 364 KB | Output is correct |
15 | Correct | 1 ms | 364 KB | Output is correct |
16 | Correct | 1 ms | 384 KB | Output is correct |
17 | Correct | 39 ms | 364 KB | Output is correct |
18 | Correct | 42 ms | 364 KB | Output is correct |
19 | Correct | 41 ms | 364 KB | Output is correct |
20 | Correct | 2 ms | 364 KB | Output is correct |
21 | Correct | 2 ms | 364 KB | Output is correct |
22 | Correct | 2 ms | 364 KB | Output is correct |
23 | Correct | 2 ms | 364 KB | Output is correct |
24 | Correct | 1 ms | 364 KB | Output is correct |
25 | Correct | 0 ms | 364 KB | Output is correct |
26 | Correct | 1 ms | 364 KB | Output is correct |
27 | Correct | 1 ms | 384 KB | Output is correct |
28 | Correct | 1 ms | 364 KB | Output is correct |
29 | Correct | 1 ms | 384 KB | Output is correct |
30 | Correct | 1551 ms | 700 KB | Output is correct |
31 | Correct | 1568 ms | 924 KB | Output is correct |
32 | Correct | 1563 ms | 1004 KB | Output is correct |
33 | Correct | 19 ms | 748 KB | Output is correct |
34 | Correct | 20 ms | 748 KB | Output is correct |
35 | Correct | 21 ms | 1004 KB | Output is correct |
36 | Correct | 21 ms | 896 KB | Output is correct |
37 | Correct | 21 ms | 876 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 384 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 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 | 1 ms | 364 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 0 ms | 364 KB | Output is correct |
15 | Correct | 1 ms | 364 KB | Output is correct |
16 | Correct | 1 ms | 384 KB | Output is correct |
17 | Correct | 39 ms | 364 KB | Output is correct |
18 | Correct | 42 ms | 364 KB | Output is correct |
19 | Correct | 41 ms | 364 KB | Output is correct |
20 | Correct | 2 ms | 364 KB | Output is correct |
21 | Correct | 2 ms | 364 KB | Output is correct |
22 | Correct | 2 ms | 364 KB | Output is correct |
23 | Correct | 2 ms | 364 KB | Output is correct |
24 | Correct | 1 ms | 364 KB | Output is correct |
25 | Correct | 1551 ms | 700 KB | Output is correct |
26 | Correct | 1568 ms | 924 KB | Output is correct |
27 | Correct | 1563 ms | 1004 KB | Output is correct |
28 | Correct | 19 ms | 748 KB | Output is correct |
29 | Correct | 20 ms | 748 KB | Output is correct |
30 | Correct | 21 ms | 1004 KB | Output is correct |
31 | Correct | 21 ms | 896 KB | Output is correct |
32 | Correct | 21 ms | 876 KB | Output is correct |
33 | Correct | 0 ms | 364 KB | Output is correct |
34 | Correct | 1 ms | 364 KB | Output is correct |
35 | Correct | 1 ms | 384 KB | Output is correct |
36 | Correct | 1 ms | 364 KB | Output is correct |
37 | Correct | 1 ms | 384 KB | Output is correct |
38 | Correct | 673 ms | 7276 KB | Output is correct |
39 | Execution timed out | 5042 ms | 7404 KB | Time limit exceeded |
40 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 396 KB | Output is correct |
2 | Correct | 13 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 0 ms | 364 KB | Output is correct |
5 | Correct | 4 ms | 364 KB | Output is correct |
6 | Correct | 4 ms | 364 KB | Output is correct |
7 | Correct | 4 ms | 364 KB | Output is correct |
8 | Correct | 4 ms | 364 KB | Output is correct |
9 | Correct | 4 ms | 364 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 | 0 ms | 364 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 384 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 384 KB | Output is correct |
6 | Correct | 1 ms | 364 KB | Output is correct |
7 | Correct | 112 ms | 22764 KB | Output is correct |
8 | Correct | 240 ms | 49208 KB | Output is correct |
9 | Correct | 244 ms | 49388 KB | Output is correct |
10 | Correct | 243 ms | 49516 KB | Output is correct |
11 | Correct | 119 ms | 24576 KB | Output is correct |
12 | Correct | 297 ms | 46444 KB | Output is correct |
13 | Correct | 338 ms | 49516 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 384 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 1 ms | 364 KB | Output is correct |
5 | Correct | 1 ms | 364 KB | Output is correct |
6 | Correct | 1 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 | 1 ms | 364 KB | Output is correct |
10 | Correct | 1 ms | 364 KB | Output is correct |
11 | Correct | 1 ms | 364 KB | Output is correct |
12 | Correct | 1 ms | 364 KB | Output is correct |
13 | Correct | 1 ms | 384 KB | Output is correct |
14 | Correct | 0 ms | 364 KB | Output is correct |
15 | Correct | 1 ms | 364 KB | Output is correct |
16 | Correct | 1 ms | 384 KB | Output is correct |
17 | Correct | 39 ms | 364 KB | Output is correct |
18 | Correct | 42 ms | 364 KB | Output is correct |
19 | Correct | 41 ms | 364 KB | Output is correct |
20 | Correct | 2 ms | 364 KB | Output is correct |
21 | Correct | 2 ms | 364 KB | Output is correct |
22 | Correct | 2 ms | 364 KB | Output is correct |
23 | Correct | 2 ms | 364 KB | Output is correct |
24 | Correct | 1 ms | 364 KB | Output is correct |
25 | Correct | 1551 ms | 700 KB | Output is correct |
26 | Correct | 1568 ms | 924 KB | Output is correct |
27 | Correct | 1563 ms | 1004 KB | Output is correct |
28 | Correct | 19 ms | 748 KB | Output is correct |
29 | Correct | 20 ms | 748 KB | Output is correct |
30 | Correct | 21 ms | 1004 KB | Output is correct |
31 | Correct | 21 ms | 896 KB | Output is correct |
32 | Correct | 21 ms | 876 KB | Output is correct |
33 | Correct | 673 ms | 7276 KB | Output is correct |
34 | Execution timed out | 5042 ms | 7404 KB | Time limit exceeded |
35 | Halted | 0 ms | 0 KB | - |