Submission #915860

#TimeUsernameProblemLanguageResultExecution timeMemory
915860JoseSotoFeast (NOI19_feast)C++14
100 / 100
288 ms17408 KiB
#include <bits/stdc++.h> #define fi first #define se second #define mp make_pair #define pb push_back #define all(v) v.begin(), v.end() #define sz(x) ((int) (x).size()) using namespace std; using ll = long long; using pii = pair<int,int>; using pll = pair<ll,ll>; using vi = vector<int>; using vp = vector<pii>; using vl = vector<ll>; using vvi = vector<vi>; using vvl = vector<vl>; using vb = vector<bool>; template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p){return os << '(' << p.fi << ", " << p.se << ')';} template<typename C, typename T = typename enable_if<!is_same<C, string>::value, typename C::value_type>::type> ostream& operator<<(ostream &os, const C &v){string sep; for(const T &x : v) os << sep << x, sep = " "; return os;} #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values){ cout << "[Debug]\n\t" << vars << " = "; string d = "["; (..., (cout << d << values, d = "] [")); cout << "]\n"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,k; cin >> n >> k; vl a(n + 1); for(int i=1; i<=n; i++) cin >> a[i]; auto DP = [&](ll lambda) -> array<ll,2> { vector< array<ll,2> > dp(n + 1), dp2(n + 1); for(int i=1; i<=n; i++){ dp[i][0] = dp[i-1][0]; dp2[i][0] = dp2[i-1][0]; if(a[i] - lambda + dp[i-1][1] > dp[i][0]){ dp[i][0] = a[i] - lambda + dp[i-1][1]; dp2[i][0] = 1 + dp2[i-1][1]; } dp[i][1] = dp[i][0]; dp2[i][1] = dp2[i][0]; if(a[i] + dp[i-1][1] >= dp[i][1]){ dp[i][1] = a[i] + dp[i-1][1]; dp2[i][1] = dp2[i-1][1]; } } return {dp[n][0], dp2[n][0]}; }; ll ini = 0, fin = 1e18, med; array<ll,2> ans; while(ini < fin){ med = (ini + fin)/2; ans = DP(med); if(ans[1] > k) ini = med + 1; else fin = med; } ans = DP(ini); cout << ans[0] + ini*ans[1] << "\n"; return 0; }

Compilation message (stderr)

feast.cpp: In function 'void logger(std::string, Args&& ...)':
feast.cpp:27:42: warning: fold-expressions only available with '-std=c++17' or '-std=gnu++17'
   27 |     (..., (cout << d << values, d = "] ["));
      |                                          ^
#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...