津津是个勇敢的孩子,总是做一些挑战自己的事情。一天津津来到一条宽为 L 米的小河边,河道的一边到另一边需要途径 N 块较大的石墩,每块石墩到这一边岸边之间距离 xi 米(石墩不占距离,只考虑石墩的中间点到这一边岸边之间距离)。
津津想踩着这些石墩从小河的这一边跳到另一边(不落入水中),一次可以跳过几块石墩。已知津津每次最多跳 M 米的 距离,那么津津最少跳几次就能从这一边跳到另一边?
第一行包含三个整数 L , N , M,分别表示小河的宽度、石墩数和津津跳的最远距离。
接下来 N 行,每行一个整数,第 i 行的整数 (0<di<L),表示第 i 块石墩与这一边岸边的距离,保证石墩之间的距离和石墩到这一边岸边的距离小等于 M。这些石墩按与起点距离从小到大的顺序给出,且不会有两个石墩出现在同一个位置。
一个整数,即最少的跳跃次数。
样例输入 1
10 4 2
2
4
6
8
样例输出 1
5
数据说明 对于 30% 的数据,1≤N≤10。
对于 50% 的数据,1≤N≤100。
对于 100% 的数据,1≤N≤500, 1≤M,L≤1,000,000。
#include <bits/stdc++.h>
using namespace std;
int main() {
int l, n, m, cnt=0;
cin >> l >> n >> m;
int a[n+2];
for(int i=1; i<=n; i++)
cin >> a[i];
a[0] = 0;
if(l<=m) {
cout << 1;
return 0;
}
for(int i=0; i<n; i=i) {
int t = i;
for(int j=i+1; j<=n; j++) {
if(a[j]-a[i]<=m)
t = j;
else break;
}
i = t;
cnt++;
}
cout << cnt+1;
return 0;
}
65分,求调