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
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <vector>
using namespace std;

int main() 
{
  int D=0;
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
   long long n,k;
   long long wynik=0;
  cin>>n>>k;
  vector<int> d(n);
  for (int i=0;i<n;i++){
    cin>>d[i];
  }
  
  int test=1;
  int inc = 1;
  int i=0;
  while(test==1){
    test=0;
    if (D) {for (int jj=0;jj<n;jj++) {cout<<d[jj]<<" ";}cout<<endl;}
    while(i>(-1-inc) and i<(n-inc)) {
      if (d[i]>d[i+inc]){
        if(d[i]>d[i+inc]+k){
          if (D) cout<<"Azwiekszam "<<(i+inc)+1<<" o "<<(d[i]-d[i+inc]-k)<<endl;
          wynik = wynik+(d[i]-d[i+inc]-k);
          d[i+inc] = d[i+inc]+(d[i]-d[i+inc]-k);
          test=1;
          if (D) {for (int jj=0;jj<n;jj++) {cout<<d[jj]<<" ";}cout<<endl;}
        } 
      } else {
        if(d[i]+k < d[i+inc]){
          if (D) cout<<"Bzwiekszam "<<i+1<<" o "<<(d[i+inc]-d[i]-k)<<endl;
          test=1;
          wynik = wynik+(d[i+inc]-d[i]-k);
          d[i] = d[i]+(d[i+inc]-d[i]-k);
          if (D) {for (int jj=0;jj<n;jj++) {cout<<d[jj]<<" ";}cout<<endl;}
        } 
      }
      i = i + inc;
    }
    i = i-inc;
    if (inc==1) inc=-1; else inc=1;
  }
  
   cout<<wynik;
   return 0;
}