设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。
\
using namespace std;
int main(){
int n,x,y;
cin>>n;
queue<int>a,b;
for(int i=1;i<=n;i++){
cin>>x;
if(x%2==0){
b.push(x);
}else if(x%2==1){
a.push(x);
}
}
while(b.size()!=0&&a.size()!=0){
int m=a.size();
for(int j=m;j>m-2&&j>0;j--){//控制队a一次性只出2个元素
cout<<a.front()<<" ";//输出空格
a.pop();
}
int n=b.size();
for(int j=n;j>n-1&&j>0;j--){//控制队b一次性只出1个元素
cout<<b.front()<<" ";
b.pop();
}
}
//处理队空的条件
if(a.size()==0){
while(b.size()){
cout<<b.front()<<" ";
b.pop();
}
}else{
while(a.size()){
cout<<a.front()<<" ";
a.pop();
}
}
return 0;
}