Submission #1133675

#TimeUsernameProblemLanguageResultExecution timeMemory
1133675HuyATFeast (NOI19_feast)C++17
100 / 100
89 ms1608 KiB
#include<bits/stdc++.h> #define newl '\n' const int N = 3e5 + 10; const int V = 1e7 + 10; const long long INF = 1e18; const long long M = 1e9 + 7; int a[N + 1],n,k; void readData(){ std::cin >> n >> k; for(int i = 1;i <= n;++i){ std::cin >> a[i]; } } std::pair<long long,int> dp(long long cost){ std::pair<long long,long long> f[2]{{0,0},{-INF,0}}; for(int i = 1;i <= n;++i){ std::pair<long long,long long> nf[2]; nf[0] = std::max(f[0],f[1]); nf[1] = std::max<std::pair<long long,int>>({f[0].first + a[i] - cost,f[0].second + 1},{f[1].first + a[i],f[1].second}); f[0] = nf[0]; f[1] = nf[1]; } return std::max(f[0],f[1]); } long long solve(){ long long lo = 0,hi = 1e14,ans = 0; while(lo <= hi){ long long mid = (lo + hi) / 2; if(dp(mid).second >= k){ ans = mid; lo = mid + 1; }else{ hi = mid - 1; } } return dp(ans).first + k * ans; } int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr);std::cout.tie(nullptr); readData(); // std::cout << dp(7).first; std::cout << solve(); 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...