File tree Expand file tree Collapse file tree 4 files changed +108
-1
lines changed Expand file tree Collapse file tree 4 files changed +108
-1
lines changed Original file line number Diff line number Diff line change 12
12
" '${fileBasename}'" ,
13
13
" -o" ,
14
14
" '${fileBasenameNoExtension}.exe'" ,
15
+ " -std=c++23" ,
15
16
" -Wall" ,
16
17
" -Wextra" ,
17
18
" -O2" ,
71
72
" -o" ,
72
73
" '${fileBasenameNoExtension}.exe'" ,
73
74
" -glldb" ,
75
+ " -std=c++23" ,
74
76
" -Wall" ,
75
77
" -Wextra" ,
76
78
" -O2" ,
Original file line number Diff line number Diff line change
1
+ /* *
2
+ * @file 10325.cpp
3
+ * @author Macesuted ([email protected] )
4
+ * @date 2025-04-17
5
+ *
6
+ * @copyright Copyright (c) 2025
7
+ *
8
+ */
9
+
10
+ #include < bits/stdc++.h>
11
+ using namespace std ;
12
+
13
+ #define endl ' \n '
14
+
15
+ #define maxn 1000005
16
+
17
+ int pre[maxn];
18
+
19
+ void solve (void ) {
20
+ int n;
21
+ cin >> n;
22
+ string s;
23
+ cin >> s, s = ' ' + s;
24
+
25
+ for (int i = 1 ; i <= n; i++) pre[i] = pre[i - 1 ] + (s[i] == ' 1' );
26
+
27
+ int xp = 0 , xr = -1 , rest1 = 2 ;
28
+ for (int l = 1 , r; l <= n; l = r + 1 ) {
29
+ r = l;
30
+ while (r + 1 <= n && s[l] == s[r + 1 ]) r++;
31
+ if (s[l] == ' 0' ) {
32
+ if ((r - l + 1 ) * 2 > (n - pre[n])) xp = l, xr = r;
33
+ rest1 = min (rest1, (pre[l - 1 ] > 0 ) + (pre[n] - pre[r] > 0 ));
34
+ }
35
+ }
36
+
37
+ if (xp == 0 ) {
38
+ if ((n - pre[n]) % 2 == 0 ) return cout << (n - pre[n]) / 2 + pre[n] - 1 << endl, void ();
39
+ return cout << (n - pre[n]) / 2 + pre[n] - rest1 << endl, void ();
40
+ }
41
+
42
+ cout << (n - pre[n] - (xr - xp + 1 )) + pre[n] - (pre[xp - 1 ] > 0 ) - (pre[n] - pre[xr] > 0 ) << endl;
43
+
44
+ return ;
45
+ }
46
+
47
+ int main () {
48
+ ios::sync_with_stdio (false ), cin.tie (nullptr );
49
+
50
+ int _ = 1 ;
51
+ cin >> _;
52
+ while (_--) solve ();
53
+
54
+ return 0 ;
55
+ }
Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+ using namespace std ;
3
+
4
+ #define endl ' \n '
5
+
6
+ void solve (void ) {
7
+ int64_t s, t;
8
+ cin >> s >> t;
9
+
10
+ int64_t v = sqrt (s + t);
11
+ if (v * v == s + t) return cout << " 1 " << t << endl, void ();
12
+
13
+ if (s == t) {
14
+ v = sqrt (s) + 1 ;
15
+ return cout << " 2 " << v * v - s << ' ' << t << endl, void ();
16
+ }
17
+
18
+ {
19
+ int64_t delt = abs (s - t), base = 1 ;
20
+ if (delt % 2 == 1 ) {
21
+ int64_t i = delt / 2 ;
22
+ if (s > t && (i + 1 ) * (i + 1 ) * base > s)
23
+ return cout << " 2 " << (i + 1 ) * (i + 1 ) * base - s << ' ' << t << endl, void ();
24
+ if (s < t && i * i * base > s) return cout << " 2 " << i * i * base - s << ' ' << t << endl, void ();
25
+ } else if (delt % 4 == 0 ) {
26
+ int64_t q = delt / 4 ;
27
+ if (!(q < 1 || (q - 1 ) * (q - 1 ) < min (s, t) || (q + 1 ) * (q + 1 ) < max (s, t)))
28
+ return cout << " 2 " << (q - 1 ) * (q - 1 ) - min (s, t) << ' ' << t << endl, void ();
29
+ }
30
+ }
31
+
32
+ int64_t sum = s + t;
33
+ int64_t x = sqrt (sum + 2 * sqrt (sum) + 1 ) + 1 ;
34
+ while (!((x * x - sum) & 1 )) x++;
35
+ int64_t y = (x * x - sum) / 2 ;
36
+ cout << " 3 " << x * x - s << ' ' << y * y - t << ' ' << t << endl;
37
+
38
+ return ;
39
+ }
40
+
41
+ int main () {
42
+ ios::sync_with_stdio (false ), cin.tie (nullptr );
43
+
44
+ int _ = 1 ;
45
+ cin >> _;
46
+ while (_--) solve ();
47
+
48
+ return 0 ;
49
+ }
Original file line number Diff line number Diff line change 1
1
-xc++
2
2
-Wall
3
3
-Wextra
4
- -DLOCAL
4
+ -DLOCAL
5
+ -std=c++23
You can’t perform that action at this time.
0 commit comments