제출 #1210404

#제출 시각아이디문제언어결과실행 시간메모리
1210404hypersphereFeast (NOI19_feast)C++17
100 / 100
794 ms23916 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define fi first #define se second const ll mod = 998244353; const ll mod2 = 1e9 + 6; const ll INF = 2e18; const int INT_INF = 1e9 + 11; // const double PI = acos(-1); // mt19937 mt(chrono::steady_clock::now().time_since_epoch().count()); // ll rand(ll l, ll r) // { // uniform_int_distribution<ll> uid(l, r); // return uid(mt); // } long long binpow(long long base, long long power, long long mod) { if (base == 0) return 0; if (base == 1) return 1; if (power <= 0) return 1; long long multiplier = (power % 2 == 0 ? 1 : base) % mod; return (multiplier * binpow((base * base) % mod, power / 2, mod)) % mod; } ll gcd(ll a, ll b) { if(b == 0) return a; return gcd(b, a % b); } int n; pair<ll, int> solve(vector<ll>& arr, ll penalty){ vector<vector<pair<ll, int>>> dp(n, vector<pair<ll, int>>(2)); dp[0][0] = {0, 0}; dp[0][1] = {arr[0] - penalty, 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 + arr[i] - penalty, dp[i - 1][0].second + 1), make_pair(dp[i - 1][1].first + arr[i], dp[i - 1][1].second)); } return max(dp[n - 1][0], dp[n - 1][1]); } void Run(){ ll k; cin >> n >> k; vector<ll> arr(n + 1, 0); for(int i = 0; i < n; i++) cin >> arr[i]; ll l = 0; ll r = 1e15; while(l < r){ ll md = (l + r + 1) / 2; pair<ll, int> ans = solve(arr, md); if(ans.second >= k) l = md; else r = md - 1; } pair<ll, int> ans = solve(arr, l); cout << ans.first + l * k << "\n"; } int main(){ //freopen("point3.in", "r", stdin); //freopen("point3.out", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int test = 1; //cin >> test; auto time_start = clock(); while(test--) Run(); auto time_end = clock(); cerr << "Time taken: " << time_end - time_start << "\n"; }
#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...