您的位置:首页 > 其它

poj----3069

2014-01-28 10:13 127 查看
贪心的题目,用 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: