43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
|
|
#include <bits/stdc++.h>
|
|||
|
|
/*
|
|||
|
|
测试用例I:
|
|||
|
|
7
|
|||
|
|
3 5 2 4 7 1 6
|
|||
|
|
|
|||
|
|
整体时长
|
|||
|
|
10 12 6
|
|||
|
|
|
|||
|
|
答案:6
|
|||
|
|
|
|||
|
|
--------
|
|||
|
|
|
|||
|
|
测试用例II:
|
|||
|
|
2
|
|||
|
|
1 100
|
|||
|
|
|
|||
|
|
期望答案:0
|
|||
|
|
*/
|
|||
|
|
using namespace std;
|
|||
|
|
int a[4]; //每个窗口的工作累加时长
|
|||
|
|
int n, b[60]; // n:客户个数,b[i]:i这个客户办理业务需要的时长
|
|||
|
|
int p; //现在该轮到哪个用户办理了
|
|||
|
|
|
|||
|
|
int main() {
|
|||
|
|
cin >> n;
|
|||
|
|
for (int i = 1; i <= n; i++) cin >> b[i];
|
|||
|
|
|
|||
|
|
// 1、计时器,不喜欢while(true),用for循环替代
|
|||
|
|
for (int t = 0;; t++) {
|
|||
|
|
// 2、哪个窗口办理完毕
|
|||
|
|
for (int i = 1; i <= 3; i++) {
|
|||
|
|
if (a[i] == t) { //如果累计时长等于当前时长,说明现在正好办理完毕
|
|||
|
|
a[i] += b[++p]; //将i窗口安排上++p这个客户,增加b[++p]的时长
|
|||
|
|
if (p > n) { //到当前窗口时,没有客户了,说明当前窗口是最早结束任务的,直接输出当前的时间
|
|||
|
|
cout << t << endl;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return 0;
|
|||
|
|
}
|