#include <bits/stdc++.h>
using namespace std;
#define SCALAR(x) \
int x; \
cin >> x;
#define SCALAR_LONG(x) \
long long x; \
cin >> x;
#define VECTOR(v, n) \
vector<int> v(n); \
for (int i = 0; i < n; ++i) \
cin >> v[i];
#define PAIR_VECTOR(v, pair_class, n) \
vector<pair_class> v; \
for (int _ = 0; _ < n; ++_) { \
SCALAR(first); \
SCALAR(second); \
v.push_back({first, second}); \
}
#define PRINT(expr) \
cout << expr << '\n';
#define PRINT_IF(condition) \
auto message = condition ? "Yes" : "No"; \
PRINT(message)
#define BOOST_IO() \
ios::sync_with_stdio(false); \
cin.tie(nullptr);
void solve();
int main()
{
BOOST_IO()
solve();
}
void solve() {
SCALAR(n)
SCALAR(k)
VECTOR(as, n)
auto total_truck_count = 0;
bool truck_was_used;
do {
truck_was_used = false;
for (int i = 0; i < n - 1; ++i) {
auto growth = as[i + 1] - as[i];
if (growth > k) {
auto truck_count = growth - k;
as[i] += truck_count;
total_truck_count += truck_count;
truck_was_used = true;
}
else if (growth < -k) {
auto truck_count = -k - growth;
as[i + 1] += truck_count;
total_truck_count += truck_count;
truck_was_used = true;
}
}
} while (not truck_was_used);
PRINT(total_truck_count)
}
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include <bits/stdc++.h> using namespace std; #define SCALAR(x) \ int x; \ cin >> x; #define SCALAR_LONG(x) \ long long x; \ cin >> x; #define VECTOR(v, n) \ vector<int> v(n); \ for (int i = 0; i < n; ++i) \ cin >> v[i]; #define PAIR_VECTOR(v, pair_class, n) \ vector<pair_class> v; \ for (int _ = 0; _ < n; ++_) { \ SCALAR(first); \ SCALAR(second); \ v.push_back({first, second}); \ } #define PRINT(expr) \ cout << expr << '\n'; #define PRINT_IF(condition) \ auto message = condition ? "Yes" : "No"; \ PRINT(message) #define BOOST_IO() \ ios::sync_with_stdio(false); \ cin.tie(nullptr); void solve(); int main() { BOOST_IO() solve(); } void solve() { SCALAR(n) SCALAR(k) VECTOR(as, n) auto total_truck_count = 0; bool truck_was_used; do { truck_was_used = false; for (int i = 0; i < n - 1; ++i) { auto growth = as[i + 1] - as[i]; if (growth > k) { auto truck_count = growth - k; as[i] += truck_count; total_truck_count += truck_count; truck_was_used = true; } else if (growth < -k) { auto truck_count = -k - growth; as[i + 1] += truck_count; total_truck_count += truck_count; truck_was_used = true; } } } while (not truck_was_used); PRINT(total_truck_count) } |
English