//fast
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define all(x) x.begin(),x.end()
#define rep(n) for (int i = 0 ; i<n ; i++)
#define pb push_back
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,k;
cin >> n >> k;
int a[n];
rep(n) cin >> a[i];
ll w = 0;
for (int i = 1 ; i<n ; i++){
if (abs(a[i]-a[i-1])>=k){
if (a[i]<a[i-1]){
w+=(a[i-1]-k)-a[i];
a[i] = a[i-1]-k;
}else{
for (int j = i-1 ; j>=0 ; j--){
if (a[j+1]>a[j]+k){
w+=a[j+1]-k-a[j];
a[j] = a[j+1]-k;
}
}
}
}
}
cout << w << '\n';
}
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 | //fast #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define all(x) x.begin(),x.end() #define rep(n) for (int i = 0 ; i<n ; i++) #define pb push_back int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,k; cin >> n >> k; int a[n]; rep(n) cin >> a[i]; ll w = 0; for (int i = 1 ; i<n ; i++){ if (abs(a[i]-a[i-1])>=k){ if (a[i]<a[i-1]){ w+=(a[i-1]-k)-a[i]; a[i] = a[i-1]-k; }else{ for (int j = i-1 ; j>=0 ; j--){ if (a[j+1]>a[j]+k){ w+=a[j+1]-k-a[j]; a[j] = a[j+1]-k; } } } } } cout << w << '\n'; } |
English