#include<iostream>
using namespace std;
int const MAX_LENGTH = 100001;
int n, d[MAX_LENGTH];
long long sum;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
cin >> d[i];
for (int i = 0; i < n - 1; i++)
if (d[i] > d[i + 1])
sum += d[i] - d[i + 1];
else if (d[i] < d[i + 1])
{
sum += d[i];
for (int k = d[i]; k > 0; k--)
for (int j = i + 1; d[j] > 0; j++)
d[j] --;
}
sum += d[n - 1];
cout << sum;
return 0;
}
洛谷P5019 [NOIP2018 提高组] 铺设道路进阶解法
这是一个C++程序,用于处理一个整数数组,检查数组中相邻元素的递减情况并计算差值之和。当遇到递增的情况时,程序会将前一个元素的值分配给后续元素,直到找到一个更大的元素或者数组结束。最后,程序输出整个数组的总和。

被折叠的 条评论
为什么被折叠?



