贪心
覆盖不下了就放一个新的点,一直到遍历完数组为止
/*
PROG: Saruman's Army
LANG: C++11
*/
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdlib>
#include <climits>
#include <ctype.h>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <deque>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;
#define mst(a,b) memset(a,b,sizeof(a));
typedef long long ll;
const int maxn = 200100;
const ll mod = 1000000007;
int x[1002];
int main()
{
int n, r, i, j, ans, pos, cur;
while(scanf("%d%d", &r, &n)){
mst(x,0);
if(r == -1 && n == -1) break;
for(i = 0; i < n; i++){
scanf("%d", &x[i]);
}
sort(x, x+ n);
i = 0; ans = 0;
while(i < n){
cur = x[i++];
while(i < n && x[i] <= cur + r)
i++;
pos = x[i-1];
ans++;
while(i < n && x[i] <= pos + r)
i++;
}
cout << ans << endl;
}
return 0;
}