Oj.Nbdp.Net 初赛题库 问题 状态 排名 团队 题解 课程 题目描述 感应门会在有人经过的时候自动打开,等待 x 秒后自动关闭。如果在门打开的时候有人通过,那么等待时间会被重置,重新计算 x 秒后再关闭。 给定一段时间内通过感应门的记录,请计算感应门一共开放了多少时间。 输入 第一行:两个正整数 n 与 x , n 表示通过感应门的人数, x 表示感应门的等待时间。 第二行: n 个正整数 t 1 , t 2 ,⋯, t n ,每个数字表达一个人通过感应门的时刻。 输出 样例输入输出 输入#1 复制 7 3 1 2 7 10 15 17 22 输出#1 复制 18 提示 对于 50% 的数据, 1≤n≤1000 ; 对于 100% 的数据, 1≤n≤ 10 5 , 1≤ t i ≤ 10 9 ,且 t 1 ≤ t 2 ≤ t 3 ≤⋯≤ t n 。c++代码
时间: 2024-04-01 13:36:35 浏览: 41
acm.rar_oj题目含题解_明代zjuoj
以下是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int n, x;
cin >> n >> x;
int last_time = 0; // 上一个通过感应门的时刻
int total_time = 0; // 感应门开放的总时间
for (int i = 0; i < n; i++) {
int t;
cin >> t;
if (t - last_time > x) { // 如果感应门已经关闭
total_time += x; // 记录感应门开放的时间
} else { // 如果感应门还未关闭
total_time += t - last_time; // 记录感应门开放的时间
}
last_time = t; // 更新上一个通过感应门的时刻
}
total_time += x; // 最后一次通过感应门后,感应门还会开放 x 秒
cout << total_time << endl;
return 0;
}
```
阅读全文