Skip to content

Commit a51860c

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent 51b949b commit a51860c

File tree

1 file changed

+36
-37
lines changed

1 file changed

+36
-37
lines changed

content/6_Advanced/Lagrange.mdx

+36-37
Original file line numberDiff line numberDiff line change
@@ -116,51 +116,50 @@ Because calculating $v(\lambda)$ and $c(\lambda)$ with the dynamic programming s
116116
```cpp
117117
#include <bits/stdc++.h>
118118
using namespace std;
119-
119+
120120
#define ll long long
121121

122122
const int MAX = 3e5 + 5;
123123

124-
int n, k, A[MAX]; pair<ll, ll> dp[MAX][2];
125-
126-
pair<ll, ll> better(pair<ll, ll> a, pair<ll, ll> b){
127-
if (a.first == b.first)
128-
return (a.second < b.second ? a : b);
124+
int n, k, A[MAX];
125+
pair<ll, ll> dp[MAX][2];
126+
127+
pair<ll, ll> better(pair<ll, ll> a, pair<ll, ll> b) {
128+
if (a.first == b.first) return (a.second < b.second ? a : b);
129129

130-
return (a.first > b.first ? a : b);
130+
return (a.first > b.first ? a : b);
131131
}
132132

133-
bool solve(ll lmb){
134-
dp[0][0] = {0, 0};
135-
dp[0][1] = {-1e18, 0};
136-
137-
for (int i = 1; i <= n; i++){
138-
dp[i][0] = better(dp[i - 1][0], dp[i - 1][1]);
139-
140-
dp[i][1] = better(
141-
{dp[i - 1][0].first + A[i] - lmb, dp[i - 1][0].second + 1},
142-
{dp[i - 1][1].first + A[i], dp[i - 1][1].second}
143-
);
144-
}
145-
return better(dp[n][0], dp[n][1]).second <= k;
133+
bool solve(ll lmb) {
134+
dp[0][0] = {0, 0};
135+
dp[0][1] = {-1e18, 0};
136+
137+
for (int i = 1; i <= n; i++) {
138+
dp[i][0] = better(dp[i - 1][0], dp[i - 1][1]);
139+
140+
dp[i][1] =
141+
better({dp[i - 1][0].first + A[i] - lmb, dp[i - 1][0].second + 1},
142+
{dp[i - 1][1].first + A[i], dp[i - 1][1].second});
143+
}
144+
return better(dp[n][0], dp[n][1]).second <= k;
146145
}
147-
148-
int main(){
149-
ios_base::sync_with_stdio; cin.tie(0);
150-
cin >> n >> k;
151-
152-
for (int i = 1; i <= n; i++)
153-
cin >> A[i];
154-
155-
ll L = 0, H = 1e15;
156-
157-
while (L < H){
158-
ll M = (L + H) / 2;
159-
solve(M) ? H = M : L = M + 1;
160-
}
161-
solve(L);
162-
163-
cout << better(dp[n][0], dp[n][1]).first + L * k << "\n";
146+
147+
int main() {
148+
ios_base::sync_with_stdio;
149+
cin.tie(0);
150+
cin >> n >> k;
151+
152+
for (int i = 1; i <= n; i++) cin >> A[i];
153+
154+
ll L = 0, H = 1e15;
155+
156+
while (L < H) {
157+
ll M = (L + H) / 2;
158+
solve(M) ? H = M : L = M + 1;
159+
}
160+
solve(L);
161+
162+
cout << better(dp[n][0], dp[n][1]).first + L * k << "\n";
164163
}
165164
```
166165
## Problems

0 commit comments

Comments
 (0)