#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int sciezki, maxi; long long ile_ciezarowek = 0, przechodni = 0;
cin >> sciezki >> maxi;
vector<int>fragmenty(sciezki);
cin >> fragmenty[0];
for (int i = 1; i < sciezki; i++){
cin >> fragmenty[i];
przechodni = 0;
if ((fragmenty[i-1] - fragmenty[i]) > maxi){
przechodni += fragmenty[i-1] - maxi;
przechodni -= fragmenty[i];
fragmenty[i]+=przechodni;
ile_ciezarowek += przechodni;
//cout << "---" << endl << przechodni << endl;
}else if (abs(fragmenty[i-1] - fragmenty[i]) > maxi){
przechodni += fragmenty[i] - maxi;
przechodni -= fragmenty[i-1];
fragmenty[i-1]+=przechodni;
ile_ciezarowek += przechodni;
//cout << "<--" << endl << przechodni << endl;
if (i >= 2){
przechodni = 0;
//cout << "<----------";
for (int j = i-2; j >= 0; j--){
przechodni = fragmenty[j+1]-maxi;
przechodni -= fragmenty[j];
if (przechodni <= 0){
break;
}
fragmenty[j] += przechodni;
ile_ciezarowek += przechodni;
//cout << przechodni << ' ';
}
}
}
}
cout << ile_ciezarowek;
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 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int sciezki, maxi; long long ile_ciezarowek = 0, przechodni = 0; cin >> sciezki >> maxi; vector<int>fragmenty(sciezki); cin >> fragmenty[0]; for (int i = 1; i < sciezki; i++){ cin >> fragmenty[i]; przechodni = 0; if ((fragmenty[i-1] - fragmenty[i]) > maxi){ przechodni += fragmenty[i-1] - maxi; przechodni -= fragmenty[i]; fragmenty[i]+=przechodni; ile_ciezarowek += przechodni; //cout << "---" << endl << przechodni << endl; }else if (abs(fragmenty[i-1] - fragmenty[i]) > maxi){ przechodni += fragmenty[i] - maxi; przechodni -= fragmenty[i-1]; fragmenty[i-1]+=przechodni; ile_ciezarowek += przechodni; //cout << "<--" << endl << przechodni << endl; if (i >= 2){ przechodni = 0; //cout << "<----------"; for (int j = i-2; j >= 0; j--){ przechodni = fragmenty[j+1]-maxi; przechodni -= fragmenty[j]; if (przechodni <= 0){ break; } fragmenty[j] += przechodni; ile_ciezarowek += przechodni; //cout << przechodni << ' '; } } } } cout << ile_ciezarowek; return 0; } |
English