// Author: Bartek Knapik
#include <cstdio>
const int MAXN = 1000+9;
long long l[MAXN];
long long process(int n, int k)
{
bool changed = true;
long long l_diff, r_diff, diff, res;
res = 0LL;
while (changed)
{
changed = false;
for (int i = 0; i < n; ++i)
{
l_diff = (i == 0) ? 0 : l[i - 1] - l[i];
r_diff = (i == n - 1) ? 0 : l[i + 1] - l[i];
diff = l_diff > r_diff ? l_diff : r_diff;
if (diff > k)
{
res += diff - k;
l[i] += diff - k;
changed = true;
}
}
}
return res;
}
int main()
{
int n, k;
scanf("%d%d", &n, &k);
for (int i = 0; i < n; ++i)
scanf("%lld", &l[i]);
printf("%lld\n", process(n, k));
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 | // Author: Bartek Knapik #include <cstdio> const int MAXN = 1000+9; long long l[MAXN]; long long process(int n, int k) { bool changed = true; long long l_diff, r_diff, diff, res; res = 0LL; while (changed) { changed = false; for (int i = 0; i < n; ++i) { l_diff = (i == 0) ? 0 : l[i - 1] - l[i]; r_diff = (i == n - 1) ? 0 : l[i + 1] - l[i]; diff = l_diff > r_diff ? l_diff : r_diff; if (diff > k) { res += diff - k; l[i] += diff - k; changed = true; } } } return res; } int main() { int n, k; scanf("%d%d", &n, &k); for (int i = 0; i < n; ++i) scanf("%lld", &l[i]); printf("%lld\n", process(n, k)); return 0; } |
English