40007045Saruman‘s Army |
难度级别:A; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B |
试题描述 |
直线上有N个点。点i的位置是Xi。从这N个点中选择若干个,给它们加上标记。对每一个点,其距离为R以内的区域里必须有带有标记的点(自己本身才有标记的点,可以认为与其距离为0的地方有一个带有标记的点)。在满足这个条件的情况,希望能为尽可能少的点添加标记。请问至少有多少个点被加上标记? |
输入 |
共两行,第一行包含两个整数 N 和 R ,分别表示点的个数 N 和距离 R;第二行包含 N 个整整数,依次表示 N 个点的坐标。两数之间用一个空格分隔。 |
输出 |
一个数,表示被标记的点的个数 |
输入示例 |
6 10 1 7 15 20 30 50 |
输出示例 |
3 |
其他说明 |
限制条件: 1≤N≤1000 0≤R≤1000 0≤Xi≤1000 |
#include <iostream>
using namespace std;
int a[1001];
int main()
{
int n,r,i;
scanf("%d%d",&n,&r);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
int ans=0;
sort(a+1,a+n+1);
for(i=2;i<=n;i++)
{
if(a[i]-a[i-1]<=r) {ans++;i++;}
else ans++;
}
printf("%d",ans);
//system("pause");
return 0;
}
40007045Saruman's Army(C++)
时间: 2024-10-11 13:10:10