1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <bits/stdc++.h>
#define endl '\n'

using namespace std;

int main() {
   ios_base::sync_with_stdio(false);
   cin.tie(nullptr);

   int n;
   long long k;
   cin >> n >> k;

   long long out = 0;
   vector<long long> nums(n);
   for (int i = 0; i < n; i++) {
      cin >> nums[i];
   }

   for (int i = 1; i < n; i++) {
      if (nums[i] < nums[i - 1] - k) {
         long long nw = nums[i - 1] - k;
         out += nw - nums[i];
         nums[i] = nw;
      }
      else if (nums[i] > nums[i - 1] + k) {
         for (int j = i - 1; j >= 0; j--) {
            long long nw = max(nums[j], nums[j + 1] - k);
            out += nw - nums[j];
            nums[j] = nw;
         }
      }
   }

   // for (int i = 0; i < n; i++) cerr << nums[i] << ' ';
   // cerr << '\n';

   cout << out << '\n';

   return 0;
}