#include <bits/stdc++.h>
#define f first
#define s second
#define ent '\n'
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
typedef long long ll;
using namespace std;
struct seg{
int m1,m2,sum,cnt;
};
const string out[2]={"NO\n","YES\n"};
const ll dx[]={0,1,0,-1,-1,1,1,-1};
const ll dy[]={1,0,-1,0,-1,1,-1,1};
const int mod=998244353;
const int md=1e9+7;
const int mx=2e3+12;
const bool T=0;
int dp[61][61][61][61];
bool used[2001][2001];
int pref[61][61];
int n;
int get(int i,int l,int r){
if(!l)return pref[i][r];
return pref[i][r]-pref[i][l-1];
}
void dfs(int x,int y){
used[x][y]=1;
for(int i=0;i<4;i++){
int x1=dx[i]+x,y1=dy[i]+y;
if(min(x1,y1)>=0 && max(x1,y1)<n && !used[x1][y1]){
dfs(x1,y1);
}
}
}
int solve(int N, vector<vector<int>> a){
int sum=0;
n=N;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum+=!a[i][j];
if(a[i][j]){
used[i][j]=1;
}
}
}
bool ok=0;
int pos=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(!used[i][j]){
pos=i;
if(ok)return 0;
ok=1;
dfs(i,j);
}
}
}
int l=-1,r=-1;
int len=0,sg=0;
vector<pair<int,int>> v;
for(int i=pos;i<n;i++){
int tl=-1,tr=-1,sum=0;
for(int j=0;j<n;j++){
if(!a[i][j]) {
ok = 1;
if(tl==-1){
tl=j;
}
tr=j;
sum++;
}
}
if(tl==-1)break;
if(l==-1){
l=tl,r=tr;
}
if(!(l<=tl && tr<=r || tl<=l && r<=tr) || sum!=tr-tl+1){
return 0;
}
if(r-l+1 <= tr-tl+1){
if(r-l+1 < tr-tl+1 && sg){
return 0;
}
}
else{
sg=1;
}
l=tl,r=tr;
v.push_back({tl,tr});
}
sort(v.begin(),v.end(),[](pair<int,int> a,pair<int,int> b){
return a.s-a.f>b.s-b.f;
});
l=v[0].f,r=v[0].s;
for(auto [tl,tr]: v){
if(tl < l || tr > r){
return 0;
}
l=tl, r=tr;
}
return sum;
}
int biggest_stadium(int N, vector<vector<int>> a) {
n = N;
if (n > 30) {
return solve(N, a);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
pref[i][j] = a[i][j];
if (j)pref[i][j] += pref[i][j - 1];
}
}
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int l=0;l<n;l++){
for(int r=0;r<n;r++){
dp[i][j][l][r]=-1e9;
}
}
}
}
for(int i=0;i<n;i++){
for(int l=0;l<n;l++){
for(int r=l;r<n;r++){
if(a[i][r])break;
ans=max(ans,r-l+1);
dp[i][i][l][r]=r-l+1;
}
}
}
for(int len=2;len<=n;len++){
for(int i=0;i+len-1<n;i++){
int j=i+len-1;
for(int len=1;len<=n;len++){
for(int l=0;l+len-1<n;l++){
int r=l+len-1;
if(!get(i,l,r)){
for(int tl=l;tl>=0;tl--){
for(int tr=r;tr<n;tr++){
dp[i][j][l][r]=max(dp[i][j][l][r], dp[i+1][j][tl][tr] + r-l+1);
}
}
}
if(!get(j,l,r)){
for(int tl=l;tl>=0;tl--){
for(int tr=r;tr<n;tr++){
dp[i][j][l][r]=max(dp[i][j][l][r], dp[i][j-1][tl][tr] + r-l+1);
}
}
}
ans=max(ans,dp[i][j][l][r]);
}
}
}
}
return ans;
}
Compilation message
soccer.cpp: In function 'int solve(int, std::vector<std::vector<int> >)':
soccer.cpp:87:20: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
87 | if(!(l<=tl && tr<=r || tl<=l && r<=tr) || sum!=tr-tl+1){
| ~~~~~~^~~~~~~~
soccer.cpp:69:9: warning: unused variable 'len' [-Wunused-variable]
69 | int len=0,sg=0;
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
6492 KB |
ok |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
4444 KB |
ok |
2 |
Correct |
2 ms |
4444 KB |
ok |
3 |
Correct |
1 ms |
10588 KB |
ok |
4 |
Correct |
2 ms |
10588 KB |
ok |
5 |
Correct |
1 ms |
2396 KB |
ok |
6 |
Correct |
1 ms |
4548 KB |
ok |
7 |
Partially correct |
2 ms |
1368 KB |
partial |
8 |
Partially correct |
35 ms |
21588 KB |
partial |
9 |
Partially correct |
463 ms |
310184 KB |
partial |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
4444 KB |
ok |
2 |
Correct |
2 ms |
4444 KB |
ok |
3 |
Correct |
1 ms |
4444 KB |
ok |
4 |
Correct |
1 ms |
4544 KB |
ok |
5 |
Correct |
1 ms |
4444 KB |
ok |
6 |
Correct |
1 ms |
4444 KB |
ok |
7 |
Correct |
1 ms |
4444 KB |
ok |
8 |
Correct |
1 ms |
4444 KB |
ok |
9 |
Correct |
1 ms |
4444 KB |
ok |
10 |
Correct |
1 ms |
4544 KB |
ok |
11 |
Correct |
1 ms |
4444 KB |
ok |
12 |
Correct |
1 ms |
4444 KB |
ok |
13 |
Correct |
1 ms |
4444 KB |
ok |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
6492 KB |
ok |
2 |
Correct |
1 ms |
4444 KB |
ok |
3 |
Correct |
2 ms |
4444 KB |
ok |
4 |
Correct |
1 ms |
4444 KB |
ok |
5 |
Correct |
1 ms |
4544 KB |
ok |
6 |
Correct |
1 ms |
4444 KB |
ok |
7 |
Correct |
1 ms |
4444 KB |
ok |
8 |
Correct |
1 ms |
4444 KB |
ok |
9 |
Correct |
1 ms |
4444 KB |
ok |
10 |
Correct |
1 ms |
4444 KB |
ok |
11 |
Correct |
1 ms |
4544 KB |
ok |
12 |
Correct |
1 ms |
4444 KB |
ok |
13 |
Correct |
1 ms |
4444 KB |
ok |
14 |
Correct |
1 ms |
4444 KB |
ok |
15 |
Correct |
3 ms |
8540 KB |
ok |
16 |
Correct |
1 ms |
8540 KB |
ok |
17 |
Correct |
1 ms |
8540 KB |
ok |
18 |
Correct |
1 ms |
8540 KB |
ok |
19 |
Correct |
1 ms |
8540 KB |
ok |
20 |
Correct |
1 ms |
8540 KB |
ok |
21 |
Correct |
1 ms |
8540 KB |
ok |
22 |
Correct |
1 ms |
8540 KB |
ok |
23 |
Correct |
1 ms |
8540 KB |
ok |
24 |
Correct |
1 ms |
8540 KB |
ok |
25 |
Correct |
1 ms |
8540 KB |
ok |
26 |
Correct |
1 ms |
8636 KB |
ok |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
6492 KB |
ok |
2 |
Correct |
1 ms |
4444 KB |
ok |
3 |
Correct |
2 ms |
4444 KB |
ok |
4 |
Correct |
1 ms |
10588 KB |
ok |
5 |
Correct |
2 ms |
10588 KB |
ok |
6 |
Correct |
1 ms |
4444 KB |
ok |
7 |
Correct |
1 ms |
4544 KB |
ok |
8 |
Correct |
1 ms |
4444 KB |
ok |
9 |
Correct |
1 ms |
4444 KB |
ok |
10 |
Correct |
1 ms |
4444 KB |
ok |
11 |
Correct |
1 ms |
4444 KB |
ok |
12 |
Correct |
1 ms |
4444 KB |
ok |
13 |
Correct |
1 ms |
4544 KB |
ok |
14 |
Correct |
1 ms |
4444 KB |
ok |
15 |
Correct |
1 ms |
4444 KB |
ok |
16 |
Correct |
1 ms |
4444 KB |
ok |
17 |
Correct |
3 ms |
8540 KB |
ok |
18 |
Correct |
1 ms |
8540 KB |
ok |
19 |
Correct |
1 ms |
8540 KB |
ok |
20 |
Correct |
1 ms |
8540 KB |
ok |
21 |
Correct |
1 ms |
8540 KB |
ok |
22 |
Correct |
1 ms |
8540 KB |
ok |
23 |
Correct |
1 ms |
8540 KB |
ok |
24 |
Correct |
1 ms |
8540 KB |
ok |
25 |
Correct |
1 ms |
8540 KB |
ok |
26 |
Correct |
1 ms |
8540 KB |
ok |
27 |
Correct |
1 ms |
8540 KB |
ok |
28 |
Correct |
1 ms |
8636 KB |
ok |
29 |
Correct |
1 ms |
8540 KB |
ok |
30 |
Correct |
20 ms |
29152 KB |
ok |
31 |
Correct |
16 ms |
29164 KB |
ok |
32 |
Correct |
9 ms |
29020 KB |
ok |
33 |
Correct |
5 ms |
29020 KB |
ok |
34 |
Correct |
7 ms |
29020 KB |
ok |
35 |
Correct |
12 ms |
29016 KB |
ok |
36 |
Correct |
6 ms |
29020 KB |
ok |
37 |
Correct |
7 ms |
29020 KB |
ok |
38 |
Correct |
8 ms |
29020 KB |
ok |
39 |
Correct |
8 ms |
29120 KB |
ok |
40 |
Correct |
23 ms |
29188 KB |
ok |
41 |
Correct |
25 ms |
29016 KB |
ok |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
6492 KB |
ok |
2 |
Correct |
1 ms |
4444 KB |
ok |
3 |
Correct |
2 ms |
4444 KB |
ok |
4 |
Correct |
1 ms |
10588 KB |
ok |
5 |
Correct |
2 ms |
10588 KB |
ok |
6 |
Correct |
1 ms |
4444 KB |
ok |
7 |
Correct |
1 ms |
4544 KB |
ok |
8 |
Correct |
1 ms |
4444 KB |
ok |
9 |
Correct |
1 ms |
4444 KB |
ok |
10 |
Correct |
1 ms |
4444 KB |
ok |
11 |
Correct |
1 ms |
4444 KB |
ok |
12 |
Correct |
1 ms |
4444 KB |
ok |
13 |
Correct |
1 ms |
4544 KB |
ok |
14 |
Correct |
1 ms |
4444 KB |
ok |
15 |
Correct |
1 ms |
4444 KB |
ok |
16 |
Correct |
1 ms |
4444 KB |
ok |
17 |
Correct |
3 ms |
8540 KB |
ok |
18 |
Correct |
1 ms |
8540 KB |
ok |
19 |
Correct |
1 ms |
8540 KB |
ok |
20 |
Correct |
1 ms |
8540 KB |
ok |
21 |
Correct |
1 ms |
8540 KB |
ok |
22 |
Correct |
1 ms |
8540 KB |
ok |
23 |
Correct |
1 ms |
8540 KB |
ok |
24 |
Correct |
1 ms |
8540 KB |
ok |
25 |
Correct |
1 ms |
8540 KB |
ok |
26 |
Correct |
1 ms |
8540 KB |
ok |
27 |
Correct |
1 ms |
8540 KB |
ok |
28 |
Correct |
1 ms |
8636 KB |
ok |
29 |
Correct |
1 ms |
8540 KB |
ok |
30 |
Correct |
20 ms |
29152 KB |
ok |
31 |
Correct |
16 ms |
29164 KB |
ok |
32 |
Correct |
9 ms |
29020 KB |
ok |
33 |
Correct |
5 ms |
29020 KB |
ok |
34 |
Correct |
7 ms |
29020 KB |
ok |
35 |
Correct |
12 ms |
29016 KB |
ok |
36 |
Correct |
6 ms |
29020 KB |
ok |
37 |
Correct |
7 ms |
29020 KB |
ok |
38 |
Correct |
8 ms |
29020 KB |
ok |
39 |
Correct |
8 ms |
29120 KB |
ok |
40 |
Correct |
23 ms |
29188 KB |
ok |
41 |
Correct |
25 ms |
29016 KB |
ok |
42 |
Partially correct |
26 ms |
16976 KB |
partial |
43 |
Partially correct |
24 ms |
13916 KB |
partial |
44 |
Partially correct |
27 ms |
20828 KB |
partial |
45 |
Partially correct |
27 ms |
21140 KB |
partial |
46 |
Partially correct |
26 ms |
19284 KB |
partial |
47 |
Partially correct |
27 ms |
21584 KB |
partial |
48 |
Correct |
22 ms |
13912 KB |
ok |
49 |
Partially correct |
24 ms |
14344 KB |
partial |
50 |
Partially correct |
29 ms |
13912 KB |
partial |
51 |
Partially correct |
15 ms |
5980 KB |
partial |
52 |
Partially correct |
17 ms |
8028 KB |
partial |
53 |
Partially correct |
16 ms |
6940 KB |
partial |
54 |
Partially correct |
22 ms |
8016 KB |
partial |
55 |
Partially correct |
18 ms |
9308 KB |
partial |
56 |
Partially correct |
20 ms |
12372 KB |
partial |
57 |
Partially correct |
24 ms |
17756 KB |
partial |
58 |
Partially correct |
23 ms |
17184 KB |
partial |
59 |
Partially correct |
23 ms |
15960 KB |
partial |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
6492 KB |
ok |
2 |
Correct |
1 ms |
4444 KB |
ok |
3 |
Correct |
2 ms |
4444 KB |
ok |
4 |
Correct |
1 ms |
10588 KB |
ok |
5 |
Correct |
2 ms |
10588 KB |
ok |
6 |
Correct |
1 ms |
2396 KB |
ok |
7 |
Correct |
1 ms |
4548 KB |
ok |
8 |
Partially correct |
2 ms |
1368 KB |
partial |
9 |
Partially correct |
35 ms |
21588 KB |
partial |
10 |
Partially correct |
463 ms |
310184 KB |
partial |
11 |
Correct |
1 ms |
4444 KB |
ok |
12 |
Correct |
1 ms |
4544 KB |
ok |
13 |
Correct |
1 ms |
4444 KB |
ok |
14 |
Correct |
1 ms |
4444 KB |
ok |
15 |
Correct |
1 ms |
4444 KB |
ok |
16 |
Correct |
1 ms |
4444 KB |
ok |
17 |
Correct |
1 ms |
4444 KB |
ok |
18 |
Correct |
1 ms |
4544 KB |
ok |
19 |
Correct |
1 ms |
4444 KB |
ok |
20 |
Correct |
1 ms |
4444 KB |
ok |
21 |
Correct |
1 ms |
4444 KB |
ok |
22 |
Correct |
3 ms |
8540 KB |
ok |
23 |
Correct |
1 ms |
8540 KB |
ok |
24 |
Correct |
1 ms |
8540 KB |
ok |
25 |
Correct |
1 ms |
8540 KB |
ok |
26 |
Correct |
1 ms |
8540 KB |
ok |
27 |
Correct |
1 ms |
8540 KB |
ok |
28 |
Correct |
1 ms |
8540 KB |
ok |
29 |
Correct |
1 ms |
8540 KB |
ok |
30 |
Correct |
1 ms |
8540 KB |
ok |
31 |
Correct |
1 ms |
8540 KB |
ok |
32 |
Correct |
1 ms |
8540 KB |
ok |
33 |
Correct |
1 ms |
8636 KB |
ok |
34 |
Correct |
1 ms |
8540 KB |
ok |
35 |
Correct |
20 ms |
29152 KB |
ok |
36 |
Correct |
16 ms |
29164 KB |
ok |
37 |
Correct |
9 ms |
29020 KB |
ok |
38 |
Correct |
5 ms |
29020 KB |
ok |
39 |
Correct |
7 ms |
29020 KB |
ok |
40 |
Correct |
12 ms |
29016 KB |
ok |
41 |
Correct |
6 ms |
29020 KB |
ok |
42 |
Correct |
7 ms |
29020 KB |
ok |
43 |
Correct |
8 ms |
29020 KB |
ok |
44 |
Correct |
8 ms |
29120 KB |
ok |
45 |
Correct |
23 ms |
29188 KB |
ok |
46 |
Correct |
25 ms |
29016 KB |
ok |
47 |
Partially correct |
26 ms |
16976 KB |
partial |
48 |
Partially correct |
24 ms |
13916 KB |
partial |
49 |
Partially correct |
27 ms |
20828 KB |
partial |
50 |
Partially correct |
27 ms |
21140 KB |
partial |
51 |
Partially correct |
26 ms |
19284 KB |
partial |
52 |
Partially correct |
27 ms |
21584 KB |
partial |
53 |
Correct |
22 ms |
13912 KB |
ok |
54 |
Partially correct |
24 ms |
14344 KB |
partial |
55 |
Partially correct |
29 ms |
13912 KB |
partial |
56 |
Partially correct |
15 ms |
5980 KB |
partial |
57 |
Partially correct |
17 ms |
8028 KB |
partial |
58 |
Partially correct |
16 ms |
6940 KB |
partial |
59 |
Partially correct |
22 ms |
8016 KB |
partial |
60 |
Partially correct |
18 ms |
9308 KB |
partial |
61 |
Partially correct |
20 ms |
12372 KB |
partial |
62 |
Partially correct |
24 ms |
17756 KB |
partial |
63 |
Partially correct |
23 ms |
17184 KB |
partial |
64 |
Partially correct |
23 ms |
15960 KB |
partial |
65 |
Partially correct |
417 ms |
239520 KB |
partial |
66 |
Partially correct |
251 ms |
59476 KB |
partial |
67 |
Partially correct |
235 ms |
59660 KB |
partial |
68 |
Partially correct |
439 ms |
308304 KB |
partial |
69 |
Partially correct |
424 ms |
300372 KB |
partial |
70 |
Partially correct |
412 ms |
289212 KB |
partial |
71 |
Partially correct |
440 ms |
308624 KB |
partial |
72 |
Partially correct |
441 ms |
310140 KB |
partial |
73 |
Correct |
343 ms |
185068 KB |
ok |
74 |
Correct |
330 ms |
187472 KB |
ok |
75 |
Partially correct |
346 ms |
186960 KB |
partial |
76 |
Partially correct |
336 ms |
184912 KB |
partial |
77 |
Partially correct |
359 ms |
184988 KB |
partial |
78 |
Partially correct |
235 ms |
59664 KB |
partial |
79 |
Partially correct |
239 ms |
59600 KB |
partial |
80 |
Partially correct |
237 ms |
59860 KB |
partial |
81 |
Partially correct |
234 ms |
59472 KB |
partial |
82 |
Partially correct |
247 ms |
59540 KB |
partial |
83 |
Partially correct |
248 ms |
59668 KB |
partial |
84 |
Partially correct |
294 ms |
82224 KB |
partial |
85 |
Partially correct |
247 ms |
73748 KB |
partial |
86 |
Partially correct |
276 ms |
93652 KB |
partial |
87 |
Partially correct |
259 ms |
96796 KB |
partial |
88 |
Partially correct |
331 ms |
160336 KB |
partial |
89 |
Partially correct |
440 ms |
285776 KB |
partial |
90 |
Partially correct |
384 ms |
228176 KB |
partial |
91 |
Partially correct |
429 ms |
270268 KB |
partial |
92 |
Partially correct |
239 ms |
59472 KB |
partial |
93 |
Partially correct |
263 ms |
59476 KB |
partial |
94 |
Partially correct |
232 ms |
59556 KB |
partial |
95 |
Partially correct |
232 ms |
59476 KB |
partial |
96 |
Partially correct |
229 ms |
59504 KB |
partial |
97 |
Partially correct |
236 ms |
59664 KB |
partial |
98 |
Partially correct |
234 ms |
59476 KB |
partial |
99 |
Partially correct |
230 ms |
59664 KB |
partial |
100 |
Partially correct |
425 ms |
247376 KB |
partial |
101 |
Partially correct |
266 ms |
88120 KB |
partial |
102 |
Partially correct |
280 ms |
90896 KB |
partial |
103 |
Partially correct |
384 ms |
234068 KB |
partial |
104 |
Partially correct |
270 ms |
100888 KB |
partial |
105 |
Partially correct |
353 ms |
104520 KB |
partial |
106 |
Partially correct |
368 ms |
203968 KB |
partial |
107 |
Partially correct |
347 ms |
187112 KB |
partial |
108 |
Partially correct |
250 ms |
59624 KB |
partial |
109 |
Partially correct |
266 ms |
51796 KB |
partial |