@@ -122,37 +122,37 @@ using namespace std;
122
122
123
123
const ll INF = (ll)300000 * 1000000000 ;
124
124
125
- int main (){
126
- int n, k;
127
- cin >> n >> k;
128
-
129
- int a[ n + 1] ;
130
- for (int i = 1; i <= n; i++) cin >> a[ i] ;
131
-
132
- auto solveLambda = [ &] (ll lmb){
133
- pair < ll , ll > dp [n + 1 ][2 ];
134
-
135
- dp [0 ][0 ] = {0 , 0 };
136
- dp [0 ][1 ] = {-INF , 0 };
137
-
138
- for (int i = 1 ; i <= n ; i ++ ){
139
- dp[i ][0 ] = max(dp[i - 1 ][0 ], dp[i - 1 ][1 ]);
140
-
141
- dp[i ][1 ] = max(
142
- make_pair(dp[i - 1 ][0 ].first + a[i ] - lmb, dp[ i - 1 ][ 0 ].second + 1),
143
- make_pair( dp[i - 1 ][1 ].first + a[ i ], dp[ i - 1 ][ 1 ].second)
144
- );
145
- }
146
- return max(dp[n ][0 ], dp[n ][1 ]);
147
- };
148
-
149
- ll lo = 0, hi = INF;
150
-
151
- while (lo < hi){
152
- ll mid = (lo + hi) / 2;
153
- solveLambda(mid).second <= k ? hi = mid : lo = mid + 1 ;
154
- }
155
- cout << solveLambda (lo ).first + lo * k << endl ;
125
+ int main () {
126
+ int n, k;
127
+ cin >> n >> k;
128
+
129
+ int a[ n + 1] ;
130
+ for (int i = 1; i <= n; i++) cin >> a[ i] ;
131
+
132
+ auto solveLambda = [ &] (ll lmb) {
133
+ pair < ll , ll > dp [n + 1 ][2 ];
134
+
135
+ dp [0 ][0 ] = {0 , 0 };
136
+ dp [0 ][1 ] = {-INF , 0 };
137
+
138
+ for (int i = 1 ; i <= n ; i ++ ) {
139
+ dp[i ][0 ] = max(dp[i - 1 ][0 ], dp[i - 1 ][1 ]);
140
+
141
+ dp[i ][1 ] =
142
+ max( make_pair(dp[i - 1 ][0 ].first + a[i ] - lmb,
143
+ dp[i - 1 ][0 ].second + 1),
144
+ make_pair(dp[ i - 1 ][ 1 ].first + a[ i ], dp[ i - 1 ][ 1 ].second) );
145
+ }
146
+ return max(dp[n ][0 ], dp[n ][1 ]);
147
+ };
148
+
149
+ ll lo = 0, hi = INF;
150
+
151
+ while (lo < hi) {
152
+ ll mid = (lo + hi) / 2;
153
+ solveLambda(mid).second <= k ? hi = mid : lo = mid + 1 ;
154
+ }
155
+ cout << solveLambda (lo ).first + lo * k << endl ;
156
156
}
157
157
```
158
158
0 commit comments