Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
338122 | 黄浙峰老师 | 【C6-7】节约用电 | C++ | 通过 | 100 | 55 MS | 376 KB | 1069 | 2025-08-06 10:32:45 |
#include <iostream> #include <algorithm> using namespace std; int a[100086]; int main() { // 读取输入:n是灯的数量,m是最大距离 int n, m; cin >> n >> m; // 读取每盏灯的位置 for (int i = 0; i < n; i++) { cin >> a[i]; } // 对灯的位置进行排序 sort(a, a+n); // 如果只有两盏灯,都不能关闭 if (n <= 2) { cout << 0 << endl; return 0; } int x = 0; // 记录关掉的灯的数量 int y = 0; // 上一盏亮着的灯的索引 // 从第二盏灯遍历到倒数第二盏灯 for (int i = 1; i < n-1; i++) { // 判断如果关掉当前灯,上一盏亮灯和下一盏灯之间的距离是否超过m if (a[i+1] - a[y] > m) { // 如果超过m,那么当前灯必须亮着 y = i; } else { // 如果不超过m,那么当前灯可以关掉 x++; } } // 输出关掉的灯的数量 cout << x << endl; return 0; }