贪心的题目,用 a,b来标记端点,Count来计数,从左开始,不停地向右移动。
上代码
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int num[1010]={0};
int cmp(const void*a,const void*b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int N,R,i;
while(scanf("%d%d",&R,&N)==2&&R!=-1&&N!=-1)
{
int Count=0;
for(i=0;i<N;i++)
cin>>num[i];
qsort(num,N,sizeof(int),cmp);
i=0;
int a=0,b=0;
while(i<N)
{
a=num[i];
while(i<N&&(num[i]-a)<=R)
i++;
b=num[i-1];
while(i<N&&(num[i]-b)<=R)
i++;
Count++;
}
cout<<Count<<endl;
}
return 0;
}