設某銀行有A、B兩個業務視窗,且處理業務的速度不一樣,其中A視窗處理速度是B視窗的2倍 —— 即當A視窗每處理完2個顧客時,B視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,并且當不同視窗同時處理完2個顧客時,A視窗顧客優先輸出。
#include <cstdio>
using namespace std;
const int MAXN = 1010;
int a[MAXN], b[MAXN], cnta, cntb;
int main() {
cnta = cntb = 0;
int n; scanf("%d", &n);
for (int i = 1; i <= n; i++) {
int temp; scanf("%d", &temp);
if (temp % 2) a[++cnta] = temp;
else b[++cntb] = temp;
}
int flag = 0, x = 1, y = 1;
while (x <= cnta || y <= cntb) {
if (x <= cnta) { if (flag++) printf(" "); printf("%d", a[x++]); }
if (x <= cnta) { if (flag++) printf(" "); printf("%d", a[x++]); }
if (y <= cntb) { if (flag++) printf(" "); printf("%d", b[y++]); }
}
return 0;
}