十一年前,北湖曾经是一片平整的土地,北湖的施工队打算将其挖出深坑,注水造出人工湖。
为了简化运算,我们假设北湖的地面是一维的,每一块宽度都为1,高度是非负整数,那么可以用一个数组来表达一块地面。
一开始北湖是一片平地,每一块的高度为
。下图是
的情况,用数组表示为[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
第一行输入两个整数
。表示北湖的总宽度和初始每一块的高度。
接下来一行
个整数
,表示图纸上每一个位置的高度。
Output
一个整数表示最少几天能将北湖挖好。
Notes
9天挖土的区间为[1,7],[1,3],[5,7],[1,1],[3,3],[6,6],[9,12],[10,10],[12,12]。
#include<stdio.h>
int main()
{
long long int w,h,i,H,r=0,f=0;
scanf("%lld %lld",&w,&h);
for(i=0;i<w;i++)
{
scanf("%lld",&H);
if(f<h-H) r=r+h-H-f;
f=h-H;
}
printf("%lld\n",r);
return 0;
}