#include<bits/stdc++.h>
using namespace std;
long long xd[1009];
long long n,k,a;
long long fixLeft(int index)
{
long long res=0;
while(index>1 && xd[index] - xd[index-1]>k)
{
res+=xd[index] - xd[index-1] - k;
xd[index-1] += xd[index] - xd[index-1] - k;
index--;
}
return res;
}
long long fixRight(int index)
{
long long res=0;
while(index<n && xd[index] - xd[index+1]>k)
{
res+=xd[index] - xd[index+1] - k;
xd[index+1] += xd[index] - xd[index+1] - k;
index++;
}
return res;
}
int main()
{
ios_base::sync_with_stdio(0);
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>xd[i];
long long res=0;
res+=fixRight(1);
res+=fixLeft(n);
for(int i=2;i<n;i++)
{
res+=fixLeft(i);
res+=fixRight(i);
}
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 | #include<bits/stdc++.h> using namespace std; long long xd[1009]; long long n,k,a; long long fixLeft(int index) { long long res=0; while(index>1 && xd[index] - xd[index-1]>k) { res+=xd[index] - xd[index-1] - k; xd[index-1] += xd[index] - xd[index-1] - k; index--; } return res; } long long fixRight(int index) { long long res=0; while(index<n && xd[index] - xd[index+1]>k) { res+=xd[index] - xd[index+1] - k; xd[index+1] += xd[index] - xd[index+1] - k; index++; } return res; } int main() { ios_base::sync_with_stdio(0); cin>>n>>k; for(int i=1;i<=n;i++) cin>>xd[i]; long long res=0; res+=fixRight(1); res+=fixLeft(n); for(int i=2;i<n;i++) { res+=fixLeft(i); res+=fixRight(i); } cout<<res<<endl; return 0; } |
English