📋 题目描述
银行有 n 个客户按顺序到达,每人需要不同的服务时间。银行只有一个服务员,从 0 时刻开始连续为客户服务。请计算并输出每位客户结束服务的时刻。
📥 输入输出格式
输入格式
第一行:一个整数 n(1 ≤ n ≤ 100),表示客户数量
第二行:n 个整数,表示每位客户需要的服务时间 ti(1 ≤ ti ≤ 60)
输出格式
输出 n 行,每行一个整数
第 i 行表示第 i 位客户结束服务的时刻
📊 输入输出样例
样例 1
输入:
3
5 3 8
输出:
5
8
16
样例 2
输入:
4
10 5 3 7
输出:
10
15
18
25
💡 核心思想
问题分析
这是一道典型的
模拟类题目。核心是模拟真实的银行服务过程:
- 只有一个服务员,客户按顺序排队
- 上一位客户结束 = 下一位客户开始
- 用一个变量跟踪当前时间即可
⌨️ 参考代码
int currentTime = 0;
for (int i = 0; i < n; i++) {
currentTime += times[i];
cout << currentTime << endl;
}
🔍 算法特点
✅ 空间优化
不需要用数组存储所有结果,可以边计算边输出,空间复杂度从 O(n) 降为 O(1)。