#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,k;
cin>>n>>k;
vector<int>nums;
for(int i =0;i<n;i++){
int a;
cin>>a;
nums.push_back(a);
}
if(n==1){
cout<<0<<endl;
return 0;
}
int res = 0;
int ind_l = -1;
vector<bool>ify(n,false);
while(true){
pair<int,int>mks={0,-1};
for(int i = 0;i<n;i++){
if(ify[i]==false){
mks = max(mks,{nums[i],i});
}
}
if(mks.second==-1){
break;
}
ify[mks.second]=true;
int mn = mks.first;
if(mks.second == 0){
if(nums[1]+k<mn){
res+=(nums[0]-k-nums[1]);
nums[1] = nums[0]-k;
}
}else if(mks.second == n-1){
if(nums[n-2]+k<mn){
res+=(nums[n-1]-k-nums[n-2]);
nums[n-2] = nums[n-1]-k;
}
}else{
if(nums[mks.second+1]+k<mn){
res+=(nums[mks.second]-k-nums[mks.second+1]);
nums[mks.second+1] = nums[mks.second]-k;
}
if(nums[mks.second-1]+k<mn){
res+=(nums[mks.second]-k-nums[mks.second-1]);
nums[mks.second-1] = nums[mks.second]-k;
}
}
}
cout<<res<<endl;
return 0;
}
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include <bits/stdc++.h> using namespace std; #define int long long int32_t main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,k; cin>>n>>k; vector<int>nums; for(int i =0;i<n;i++){ int a; cin>>a; nums.push_back(a); } if(n==1){ cout<<0<<endl; return 0; } int res = 0; int ind_l = -1; vector<bool>ify(n,false); while(true){ pair<int,int>mks={0,-1}; for(int i = 0;i<n;i++){ if(ify[i]==false){ mks = max(mks,{nums[i],i}); } } if(mks.second==-1){ break; } ify[mks.second]=true; int mn = mks.first; if(mks.second == 0){ if(nums[1]+k<mn){ res+=(nums[0]-k-nums[1]); nums[1] = nums[0]-k; } }else if(mks.second == n-1){ if(nums[n-2]+k<mn){ res+=(nums[n-1]-k-nums[n-2]); nums[n-2] = nums[n-1]-k; } }else{ if(nums[mks.second+1]+k<mn){ res+=(nums[mks.second]-k-nums[mks.second+1]); nums[mks.second+1] = nums[mks.second]-k; } if(nums[mks.second-1]+k<mn){ res+=(nums[mks.second]-k-nums[mks.second-1]); nums[mks.second-1] = nums[mks.second]-k; } } } cout<<res<<endl; return 0; } |
English