作者 leah
单位 山东理工大学
山东理工大学里面有一条超长的走廊,可以看成是一条直线,走廊里一共有n盏电灯,每盏电灯的位置为ai。为了响应国家号召节约用电,校长决定关掉几盏灯,仅维持走廊的基本光照。
具体规则是:如果某盏灯的左右两盏亮着的灯距离不超过m,就可以把这盏灯关闭,其中头尾两盏灯不允许关闭。
现在请你计算最多关掉多少盏灯。
输入格式:
第一行两个整数n,m(2<=n<=100000,1<=m<=1000000),分别表示电灯的盏数和最大距离m。
第二行n个整数,表示每盏灯的位置ai(1<=ai<=1000000)。
输出格式:
一个整数,表示最多关掉电灯的数量。
输入样例:
在这里给出一组输入。例如:
4 5
3 6 10 1
输出样例:
在这里给出相应的输出。例如:
1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
typedef long long ll;
int main()
{
int n, m, i, j, count=0, l,b;
int a[100000];
scanf("%d%d", &n, &m);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
l = a[0];
for (i = 1; i < n - 1; i++)
{
b = a[i + 1] - l;
if (b <= m)
count++;
else
l = a[i];
}
printf("%d\n", count);
return 0;
}