题目描述 六一即将到来,为了迎接节日的到来,准备举办彩绘活动。活动安排如下:学校准备了一条10000米的白布条,可以看成x轴上的0至10000。你需要用喷枪将颜料喷到白布条上,喷枪最远能喷到的距离为a,其中a为正整数,当然你既可以向左边喷,也可以向右边喷。目标就是将整个白布条喷上彩绘。现在白布条上有n个位置可以站立(每个站立点也是整数)。 现在需要你求出最少需要站在几个位置才能将整个白布条喷上彩绘。
输入 第一行两个整数n和a。分别表示可以站的点位个数以及喷枪最远能喷到的距离为a。
第二行n个数,分别表示可以站的点位坐标。
输出 一个数,表示将整个白布喷上彩绘最少需要站在几个位置。
样例输入 5 5000 0 1000 6000 2000 5000 样例输出 1 样例说明 只需要站在5000这个位置即可。向左可以喷到0-5000,向右5000-10000。因此只需要一个位置。
数据说明 题目保证有解。
0<=n<=10000
0<=a<=10000
我的代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a,cnt=0;
cin>>n>>a;
vector<int> p(n);
for(int i=0;i<n;i++) cin>>p[i];
sort(p.begin(),p.end());
int r=-a;
for(int i:p){
if(i>r+a){
r=i+a;
cnt++;
}
else r=max(r,i+a);
}
cout<<cnt;
return 0;
}
请各位大佬来帮助本位蒟蒻
急!