#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
LL n, k;
cin>>n>>k;
vector<LL> v(n);
vector<bool> done(n);
for(auto &x : v)cin>>x;
LL res = 0;
for(int i=0; i<n; i++){
pair<LL, int> maxi = {0, -1};
for(int j=0; j<n; j++){
if(done[j])continue;
if(maxi.first < v[j]){
maxi = {v[j], j};
}
}
int id = maxi.second;
if(id>0 && v[id-1] + k < v[id]){
LL diff = v[id] - (v[id-1] + k);
res += diff;
v[id-1] += diff;
}
if(id<n-1 && v[id+1] + k < v[id]){
LL diff = v[id] - (v[id+1] + k);
res += diff;
v[id+1] += diff;
}
done[id]=true;
}
cout<<res<<"\n";
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 | #include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); LL n, k; cin>>n>>k; vector<LL> v(n); vector<bool> done(n); for(auto &x : v)cin>>x; LL res = 0; for(int i=0; i<n; i++){ pair<LL, int> maxi = {0, -1}; for(int j=0; j<n; j++){ if(done[j])continue; if(maxi.first < v[j]){ maxi = {v[j], j}; } } int id = maxi.second; if(id>0 && v[id-1] + k < v[id]){ LL diff = v[id] - (v[id-1] + k); res += diff; v[id-1] += diff; } if(id<n-1 && v[id+1] + k < v[id]){ LL diff = v[id] - (v[id+1] + k); res += diff; v[id+1] += diff; } done[id]=true; } cout<<res<<"\n"; return 0; } |
English