题目描述
已知n盏灯以及每盏灯的位置p[i],p[i]均不相等,两盏相邻的灯当小于dist时,若这个安全距离里面还有灯是亮着时,就可以关掉该盏灯,(即若第i-1盏与第i+1盏的距离<=dist,则可以关掉第i盏)求在保证洞里的光线是充足的情况下,一段区域里能删除的灯的最大值。
距离洞口最近和最远的两盏灯必须是亮着
输入输出格式
输入格式:
第一行两个数,n和dist
第二行n个数,即每盏灯的位置
输出格式:
一个数,即一段区域里能删除的灯的最大值。
输入输出样例
说明
n<=100000
思路:第一盏灯一定选,然后就可以模拟了。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,m,pos,ans; int num[100010]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&num[i]); sort(num+1,num+1+n); pos=1; for(int i=3;i<=n;i++) if(num[i]-num[pos]<m) ans++; else pos=i-1; cout<<ans; }