#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int ile;
int maks;
cin>>ile>>maks;
vector<int> wys(ile);
for(int i=0;i<ile;i++) cin>>wys[i];
int suma=0;
for(int i=0;i<ile-1;i++){
if(wys[i+1] < wys[i] - maks){
int roznica = wys[i] - maks - wys[i+1];
wys[i+1] += roznica;
suma += roznica;
}
else if(wys[i+1] > wys[i] + maks)
{
int x = wys[i+1] - maks;
int pom = max(0, x - wys[i]);
wys[i] += pom;
suma += pom;
int j = i;
while(j > 0 && wys[j] > wys[j-1] + maks){
int y = wys[j] - maks;
int n = max(0, y - wys[j-1]);
wys[j-1] += n;
suma += n;
j--;
}
}
}
cout<<suma<<"\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 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ile; int maks; cin>>ile>>maks; vector<int> wys(ile); for(int i=0;i<ile;i++) cin>>wys[i]; int suma=0; for(int i=0;i<ile-1;i++){ if(wys[i+1] < wys[i] - maks){ int roznica = wys[i] - maks - wys[i+1]; wys[i+1] += roznica; suma += roznica; } else if(wys[i+1] > wys[i] + maks) { int x = wys[i+1] - maks; int pom = max(0, x - wys[i]); wys[i] += pom; suma += pom; int j = i; while(j > 0 && wys[j] > wys[j-1] + maks){ int y = wys[j] - maks; int n = max(0, y - wys[j-1]); wys[j-1] += n; suma += n; j--; } } } cout<<suma<<"\n"; return 0; } |
English