十一年前,北湖曾经是一片平整的土地,北湖的施工队打算将其挖出深坑,注水造出人工湖。
为了简化运算,我们假设北湖的地面是一维的,每一块宽度都为1,高度是非负整数,那么可以用一个数组来表达一块地面。
一开始北湖是一片平地,每一块的高度为h。下图是 h=3的情况,用数组表示为[3,3,3,3,3,3,3,3,3,3,3,3]。
施工队根据图纸想将其挖成凹凸不平的形状,如下图所示,数组表示为[0,1,0,2,1,0,1,3,2,1,2,1]。
施工队有一台挖土机,每一天挖土机可以将连续一段区间挖掉一格土。包工头小张想尽快完成任务,请你告诉他将平整的土地挖成图纸所示的情况最少需要多少天?
Input
第一行输入两个整数
。表示北湖的总宽度和初始每一块的高度。
接下来一行n个整数
,表示图纸上每一个位置的高度。
Output
一个整数表示最少几天能将北湖挖好。
Notes
9天挖土的区间为[1,7],[1,3],[5,7],[1,1],[3,3],[6,6],[9,12],[10,10],[12,12]。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
代码
#include<stdio.h>
main()
{
long long n,h,t,x,day=0;
scanf("%lld %lld",&n,&h);
t=h;
while(n--){
scanf("%lld",&x);
if(x<t) day+=t-x;
t=x;
}
printf("%lld\n",day);
}