제출 #1176738

#제출 시각아이디문제언어결과실행 시간메모리
1176738urejgiFeast (NOI19_feast)C++20
100 / 100
165 ms11000 KiB
#pragma GCC optimize("O3,unroll-loops,fast-math") #pragma GCC target("avx,avx2,bmi,bmi2,popcnt,lzcnt,tune=native") #include <bits/stdc++.h> using namespace std; typedef long long ll; signed main(){ cin.tie(0)->sync_with_stdio(0); int n,k; cin >> n >> k; int a[n]; for(auto&x:a)cin>>x; auto solve = [&](ll y){ pair<ll, ll> dp[n][2]; dp[0][0] = {0,0}; dp[0][1] = {a[0]-y, 1}; for(int i = 1; i < n; i++){ dp[i][0] = max(dp[i-1][0], dp[i-1][1]); dp[i][1] = max(make_pair(dp[i-1][0].first + a[i] - y, dp[i-1][0].second + 1), make_pair(dp[i-1][1].first + a[i], dp[i-1][1].second)); } return max(dp[n-1][0], dp[n-1][1]); }; ll l = 0, r = 1e18; while(l < r){ ll m = (l+r+1)/2; solve(m).second >= k ? l = m : r = m-1; } cout << solve(l).first + l*k << '\n'; 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...