Submission #1268216

#TimeUsernameProblemLanguageResultExecution timeMemory
1268216pqhxappleFeast (NOI19_feast)C++20
100 / 100
89 ms12104 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(i,a,b) for (int i = (a), _b = (b); i <= (_b); ++i) #define FORD(i,a,b) for (int i = (a), _b = (b); i >= (_b); --i) #define getBit(mask,i) (((mask) >> (i)) & (1LL)) #define allof(x) begin(x), end(x) #define el cout << '\n'; //--Compare------------------------------------------------------------------------------------ template<class X, class Y> inline bool maximize(X &x, const Y &y){ return (x < y) ? x = y, 1 : 0; } template<class X, class Y> inline bool minimize(X &x, const Y &y){ return (x > y) ? x = y, 1 : 0; } //--Process------------------------------------------------------------------------------------ #define int long long #define fi first #define se second typedef pair <int, int> ii; constexpr int MAXN = 3e5 + 10; int n, k; int a[MAXN]; ii dp[MAXN][2]; signed main(void) { cin.tie(nullptr)->sync_with_stdio(false); cin.exceptions(cin.failbit); cin >> n >> k; FOR(i, 1, n) cin >> a[i]; function <ii(int)> calc = [&](int lmb) { dp[1][0] = {0, 0}; dp[1][1] = {a[1] - lmb, 1}; FOR(i, 2, n) { dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); ii val1 = make_pair(dp[i - 1][0].fi + a[i] - lmb, dp[i - 1][0].se + 1); ii val2 = make_pair(dp[i - 1][1].fi + a[i], dp[i - 1][1].se); dp[i][1] = max(val1, val2); } return max(dp[n][0], dp[n][1]); }; int low = 0, high = 1e18; while (low < high) { int mid = (low + high + 1) / 2; calc(mid).se >= k ? low = mid : high = mid - 1; } cout << calc(low).fi + low * k << '\n'; cerr << (1.0 * clock() / CLOCKS_PER_SEC); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...