从最左边开始考虑。对于这个点,到其距离以内的范围内必须要带有标记的点。(此点位于最左边,所以显然)带有标记的这个点一定在此点右侧(包含这个点自身)
#include<iostream>
#include<algorithm>
using namespace std;
int N,R;
int X[1002];
void solve()
{
sort(X,X+N);
int i=0,ans=0;
while(i<N)
{
int s=X[i++];
while(i<N&&X[i]<=s+R)
i++;
int p=X[i-1];
while(i<N&&X[i]<=p+R)
i++;
ans++;
}
printf("%d\n",ans);
}
int main()
{
while(cin>>R>>N)
{
if(N==-1&&R==-1)
break;
for(int i=0;i<N;i++)
cin>>X[i];
solve();
}
return 0;
}