Submission #897776

#TimeUsernameProblemLanguageResultExecution timeMemory
897776CDuongFeast (NOI19_feast)C++17
4 / 100
93 ms10592 KiB
/* #pragma GCC optimize("Ofast,unroll-loops") #pragma GCC target("avx2,fma,bmi,bmi2,sse4.2,popcnt,lzcnt") */ #include <bits/stdc++.h> #define taskname "" #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define i64 long long #define int long long #define pb push_back #define ff first #define ss second #define isz(x) (int)x.size() using namespace std; const int mxN = 3e5 + 5; const int mod = 1e9 + 7; const i64 oo = 1e18; int n, k; i64 a[mxN]; pair<int, int> dp[mxN]; pair<int, int> calc(i64 delta) { pair<int, int> mx = {0, 0}, res = {0, 0}; for (int i = 1; i <= n; ++i) { int tmp = mx.ff + a[i] + delta; dp[i] = max(dp[i - 1], pair{tmp, mx.ss - 1}); mx = max(mx, pair{dp[i].ff - a[i], mx.ss}); res = max(res, dp[i]); } // cout << mx.ff << " " << mx.ss << endl; return res; } void solve() { cin >> n >> k; for (int i = 1; i <= n; ++i) { cin >> a[i]; a[i] += a[i - 1]; } i64 l = -1e12, r = 0; while (l < r) { int mid = (l + r + 1) >> 1; if (calc(mid).ss <= k) l = mid; else r = mid - 1; } auto res = calc(l); cout << res.ff + res.ss * l << endl; } signed main() { #ifndef CDuongg if(fopen(taskname".inp", "r")) assert(freopen(taskname".inp", "r", stdin)), assert(freopen(taskname".out", "w", stdout)); #else freopen("bai3.inp", "r", stdin); freopen("bai3.out", "w", stdout); auto start = chrono::high_resolution_clock::now(); #endif ios_base::sync_with_stdio(false); cin.tie(nullptr); int t = 1; //cin >> t; while(t--) solve(); #ifdef CDuongg auto end = chrono::high_resolution_clock::now(); cout << "\n"; for(int i = 1; i <= 100; ++i) cout << '='; cout << "\nExecution time: " << chrono::duration_cast<chrono::milliseconds> (end - start).count() << "[ms]" << endl; cout << "Check array size pls sir" << endl; #endif }
#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...