銀行に A と B の 2 つの営業窓口があり、処理速度が異なるとします。窓口 A の処理速度は窓口 B の 2 倍、つまり窓口 A が 2 人の顧客の処理を完了するとき、窓口 B は 1 人の顧客の処理を完了します。お客様。銀行に到着する顧客の順序を考慮して、業務が完了した順序で顧客の順序を出力してください。次々に来店する顧客の時間間隔は考慮せず、異なる窓口で同時に2人の顧客を処理した場合、窓口Aの顧客が先に出力されるものとする。
入力形式:
入力は正の整数の行で、最初の数値 N (≤1000) は顧客の総数で、その後に N 顧客の数が続きます。奇数番号のお客様はA窓口へ、偶数番号のお客様はB窓口へご対応ください。数字はスペースで区切ります。
出力フォーマット:
業務処理が完了した順に顧客番号を出力します。数字はスペースで区切る必要がありますが、最後の数字の後に余分なスペースを入れないでください。
入力例:
8 2 1 3 9 4 11 13 15
出力サンプル:
1 3 2 9 11 4 13 15
コード長制限
16KB
制限時間
400ミリ秒
メモリ制限
64MB
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int> a, b;
int n,t;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> t;
if (t % 2 == 1)
a.push(t);
else
b.push(t);
}
int flag = 2;
while (!a.empty() || !b.empty())
{
n--;
if ((flag == 1||flag==2) && !a.empty())
{
cout << a.front();
a.pop();
flag--;
}
else
{
cout << b.front();
b.pop();
flag = 2;
}
if (n != 0)
cout << " ";
}
}