銀行業務佇列 oj150
阿新 • • 發佈:2019-02-08
銀行業務佇列
釋出時間: 2017年7月27日 19:08 最後更新: 2017年7月27日 19:08 時間限制: 1000ms 記憶體限制: 128M
一天,小明來銀行辦業務。這個銀行有A、B兩個業務視窗,且處理業務的速度不一樣,其中A視窗處理速度是B視窗的2倍——即當A視窗每處理完2個顧客時,B視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,A視窗顧客優先輸出。
輸入包含多組測試資料,每組輸入為一行正整數,其中第1個數字N(<=1000)為顧客總數,後面跟著N位顧客的編號。編號為奇數的顧客需要到A視窗辦理業務,為偶數的顧客則去B視窗。數字間以空格分隔。
對於每組輸入,按業務處理完成的順序輸出顧客的編號。數字間以空格分隔,但最後一個編號後不能有多餘的空格。
複製8 2 1 3 9 4 11 13 15 1 6
1 3 2 9 11 4 13 15 6
#include <iostream> #include<cstdio> #include <queue> using namespace std; int main() { int n; deque<int> a,b; while (cin >> n) { int num; for (int i = 0; i < n; i++) { scanf("%d",&num); if (num%2 != 0) a.push_back(num); else b.push_back(num); } int len = a.size() / 2<b.size() ?b.size() : a.size() / 2; int flag = 0; if (a.size() == 0) flag = 1; for (int i = 0; i < len; i++) { if (a.size()>0) { cout << a.front(); a.pop_front(); if (a.size() > 0) { cout << " " << a.front(); a.pop_front(); } } if (b.size() > 0) { if (flag) cout << b.front() << " "; else { if (a.size() > 0) cout << " " << b.front() << " "; else cout << " " << b.front(); } b.pop_front(); } } cout << endl; } return 0; }