File tree 1 file changed +44
-0
lines changed
1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://codeforces.com/problemset/problem/1820/B
2
+
3
+ def solve (s : str ) -> int :
4
+ if (begin := s .find ("1" )) == - 1 :
5
+ return 0
6
+ if (s_len := len (s )) == 1 :
7
+ return 1
8
+
9
+ max_len = 0
10
+
11
+ while begin < s_len :
12
+ end = (begin + 1 ) % s_len
13
+
14
+ while s [end ] == "1" and end != begin :
15
+ end = (end + 1 ) % s_len
16
+
17
+ max_len = max (end - begin if end > begin else s_len - begin + end , max_len )
18
+
19
+ while s [end ] == "0" and end != begin :
20
+ end = (end + 1 ) % s_len
21
+
22
+ if end <= begin :
23
+ break
24
+
25
+ begin = end
26
+
27
+ if max_len == s_len :
28
+ return s_len * s_len
29
+
30
+ def area (m : int ) -> int :
31
+ return m * (max_len - m + 1 )
32
+
33
+ if max_len % 2 :
34
+ return area ((max_len + 1 ) // 2 )
35
+ return max (area (max_len // 2 ), area ((max_len + 2 ) // 2 ))
36
+
37
+
38
+ def main () -> None :
39
+ for _ in range (int (input ())):
40
+ print (solve (input ()))
41
+
42
+
43
+ if __name__ == "__main__" :
44
+ main ()
You can’t perform that action at this time.
0 commit comments