#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int startTimes[n]; // 用于存储每个学生开始结账的时间
int patienceLimits[n]; // 用于存储每个学生的忍耐极限时间点
for (int i = 0; i < n; i++) {
cin >> startTimes[i] >> patienceLimits[i];
}
int currentTime = startTimes[0]; // 当前时间初始化为第一个学生到达的时间
for (int i = 0; i < n; i++) {
if (currentTime < startTimes[i]) {
currentTime = startTimes[i]; // 更新当前时间为当前学生到达的时间
}
if (currentTime > startTimes[i] + patienceLimits[i]) {
cout << 0 << " "; // 如果当前时间超过了当前学生的忍耐极限时间点,输出0
} else {
cout << currentTime << " "; // 输出当前时间作为当前学生开始结账的时间
currentTime++; // 当前时间增加1分钟
}
}
cout << endl;
}
return 0;
}
我们使用了固定大小的数组startTimes
和patienceLimits
来存储这些信息。
在主循环中,我们首先读取n
个学生的开始结账时间和忍耐极限时间点,并将它们分别存储在startTimes
和patienceLimits
数组中。
然后,我们初始化当前时间currentTime
为第一个学生的到达时间startTimes[0]
。接下来,我们使用一个循环遍历每个学生,并根据题目描述的规则进行处理。
如果当前时间小于学生的开始结账时间,我们将当前时间更新为学生的开始结账时间,以确保按照要求排队。
如果当前时间超过了学生的忍耐极限时间点(即当前时间大于startTimes[i] + patienceLimits[i]
),那么该学生直接离开,放弃结账,我们输出0。
否则,我们输出当前时间作为当前学生开始结账的时间,并将当前时间增加1分钟,表示结账完成。
标签:startTimes,猜想,int,patienceLimits,学生,时间,结账 From: https://www.cnblogs.com/Cherry929/p/17855426.html