任务描述
在一条直线上,有n个宝藏,每个宝藏的坐标是ai。其中ai为整数,n <= 10000
传说曹操手下有一批摸金校尉,每个摸金校尉可以收集长度为k的一段距离内的宝藏。比如,如果一个摸金校尉从坐标为x的位置开始收集,他可以收集[x,x+n]范围内的所有宝藏。
现给出n个宝藏的坐标,问至少需要多少摸金校尉才可以收集到所有的宝藏?
输入
第一行为n和k的值,n <= 10000。 接下来一行是n个整数,代表n个宝藏的坐标ai。
输出
输出所需要的最少的摸金校尉的个数。
样例输入
10 3 1 3 5 7 9 10 8 6 4 2
样例输出
3
代码(c语言):
#include <stdio.h>
#include<stdlib.h>
int cmp(const void* p1,const void* p2)
{
return (*(int*)p1 - *(int*)p2);
}
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int num[n];
for(int i=0;i<=n;i++)
{
//TODO
scanf("%d",&num[i]);
}
qsort(num,sizeof(num)/sizeof(num[0]),sizeof(num[0]),cmp);
int count=1,x=0;
x=num[0]+m;
for(int i=0;i<n;i++)
{
count++;
x=num[i]+m;
}
printf("%d",count);
return 0;
}
搬运请注明出处!!!