제출 #1281833

#제출 시각아이디문제언어결과실행 시간메모리
1281833nanj0178Feast (NOI19_feast)C++20
53 / 100
1027 ms22768 KiB
#include <bitset> #include<iostream> // #include<fstream> #include<vector> #include<array> #include<algorithm> #include<set> #include<cmath> #include<unordered_map> #include<iomanip> #include <map> #include <queue> #include <stack> #include <cstring> #include <climits> #include <chrono> #include <random> #include <cassert> using namespace std; #define PRINTARRAY(st, en, a) for(int _i = st; _i <= en; _i++) {cout << a[_i] << (_i != en ? " " : "\n");} #define SZ(A) (int)A.size() using LL = long long; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const LL INF = 1e18; int n, k; vector<int> A(n + 1, 0); array<LL, 2> f(LL x) { vector<vector<array<LL,2>>> dp(n + 1, vector<array<LL,2>>(2, {0,0})); dp[1][0] = {0, 0}; dp[1][1] = {A[1] - x, 1}; for(int i = 2; i <= n; i++) { dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]); dp[i][1] = max(array<LL,2>{dp[i - 1][1][0] + A[i], dp[i - 1][1][1]}, array<LL,2>{dp[i - 1][0][0] + A[i] - x, dp[i - 1][0][1] + 1}); // for(int j = 0; j < 2; j++) { // for(int k = 0; k < 2; k++) { // cout << dp[i][j][k] << " "; // } // } // cout << endl; } return max(dp[n][0],dp[n][1]); } void solve() { cin >> n >> k; A.assign(n + 1, 0); for(int i = 1; i <= n; i++) { cin >> A[i]; } LL l = 0; LL r = 1e18; while(l < r) { LL mid = l + (r - l) / 2; auto [v, cnt] = f(mid); if (cnt >= k) { l = mid + 1; } else { r = mid; } } LL ansx = max(l - 1, 0LL); auto [v, cnt] = f(ansx); cout << v + k * ansx<< "\n"; } int main() { cin.tie(0); ios_base::sync_with_stdio(false); int testcase = 1; // cin >> testcase; while(testcase--) { solve(); } }
#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...