银行业务队列简单模拟

217 阅读1分钟

设某银行有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;
}