Advertisement
Vince14

5977

Mar 19th, 2023
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <vector>
  7. #include <set>
  8. #include <map>
  9. #include <stack>
  10. #include <queue>
  11. #include <deque>
  12. #include <unordered_map>
  13. #include <iomanip>
  14. #include <regex>
  15. #include <numeric>
  16. using namespace std;
  17. #define pii pair<long long , long long>
  18. #define FAST ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
  19. const long long dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
  20. const long long MAX = 100005;
  21. const long long MOD = 1000000009;
  22.  
  23. long long n, k;
  24. long long arr[MAX];
  25. long long dp[MAX];
  26.  
  27. int main() {
  28.     //freopen("hayfeast.in", "r", stdin);
  29.     //freopen("hayfeast.out", "w", stdout);
  30.     FAST;
  31.     cin >> n >> k;
  32.     long long total = 0;
  33.     for(long long i = 1; i <= n; i++){
  34.         cin >> arr[i];
  35.         total += arr[i];
  36.     }
  37.     deque<long long> dq;
  38.     dq.push_back(0);
  39.     for(long long i = 1; i <= n + 1; i++){
  40.         // find minimum of subarray i - k ~ i - 1;
  41.         if(i <= k + 1){
  42.             dp[i] = dp[dq.front()] + arr[i];
  43.             while(!dq.empty() and dp[dq.back()] >= dp[i]){
  44.                 dq.pop_back();
  45.             }
  46.             dq.push_back(i);
  47.         }
  48.         else{
  49.             while(!dq.empty() and dq.front() < i - (k + 1)){
  50.                 dq.pop_front();
  51.             }
  52.             dp[i] = dp[dq.front()] + arr[i];
  53.             while(!dq.empty() and dp[dq.back()] >= dp[i]){
  54.                 dq.pop_back();
  55.             }
  56.             dq.push_back(i);
  57.         }
  58.     }
  59.     cout << total - dp[n + 1] << "\n";
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement