序号:3149
鸿山洞的灯
Time Limit:1s Memory Limit:125MB
题目描述
已知n盏灯以及每盏灯的位置p[i],p[i]均不相等,两盏相邻的灯当小于dist时,若这个安全距离里面还有灯是亮着时,就可以关掉该盏灯,(即若第i-1盏与第i+1盏的距离<=dist,则可以关掉第i盏)求在保证洞里的光线是充足的情况下,一段区域里能删除的灯的最大值。
距离洞口最近和最远的两盏灯必须是亮着
输入格式
第一行两个数,n和dist
第二行n个数,即每盏灯的位置
输出格式
一个数,即一段区域里能删除的灯的最大值。
输入输出样例
输入 #1
3 3
1 2 3
输出 #1
1
说明/提示
n<=100000
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
int a[100001];
int main()
{
int i,j,m,n,s=0;
scanf("%d%d",&m,&n);
for(i=1;i<=m;i++)
scanf("%d",&a[i]);
sort(a+1,a+m+1);
i=2;
while(i<m)
{
if(a[i-1]!=0)
{
if((a[i+1]-a[i-1])<=n)
s++,a[i]=0;
}
else
{
j=i-1;
while (a[j]==0)
j--;
if(a[i+1]-a[j]<=n)
s++,a[i]=0;
}
i++;
}
printf("%d",s);
return 0;
}