医師の診察をするためにキューに入れるhdu1873プライオリティキュー

問題の説明
これは地球の人々が常識を知っている医者にキューに。
しかし、0068の注意深い観察の後、彼は病院のキューや豪華なを見つけました。0068は、医師の診察をすると同時に、3人の医師(汗、これほど少ない)で病院に行きました。疾患の重症度を持っていた医師は、それが最初に来るの単純な原理に基づいてすることはできません、最初に務めました。各条件のための病院、10個の異なる優先順位ので。レベル10は最低の優先度レベル1の最優先事項です。一度医師は、医師は彼のチームでの治療のための最高の優先順位の人を選択します。あなたが同じ2つの優先度の患者が発生した場合は、最初の患者の選択がラインアップします。

今、あなたは、医師は、このプロセスをシミュレート見舞いに病院を助けます。
 

 

入力
入力データは、ファイルの終わりを扱う、いくつかのテストケースが含まれています。
各データ線は、第一の正の整数N(0 <N <2000)イベントの数を示しています。
次のNラインは、イベントが発生表します。
:二つの事象があります
1:「IN A B」は、患者がB-優先要件医師の診断と治療を有していることを示しています。(0 <A <= 3,0 <B <= 10)
2: "OUT A"は、Aは、医師は、治療、処置を実施し、完了を表し、患者は退院しました。(0 <a <= 3)
 

 

出力
各「OUT A」イベントのため、出力は、ID番号内部行の人々の診断および治療です。ときに患者イベント処理のための必要がない場合は、出力「EMPTY」。
ID番号定義人の診断と治療である:ときに一連のテストでは、K番目のイベント「B IN」、K.である患者IDに来 1から始まる番号が振られています。
 

 

サンプル入力
7
1 IN 1
1 IN 2
OUT 1
OUT 2
2 IN 1
OUT 2
OUT 1 2
1 IN 1
OUT 1
 

 

サンプル出力
2
空の
3
1
1

 

 

 

 

#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
構造体ノード{ 
	int型NUM。
	int型J。
}。
ブール演算子<(ノードX、ノードY){ 
	IF(XJ == YJ)
		戻りx.num> y.num。
	それ以外の
		戻りXJ <YJ。//小的排后面
} 



int型のmain(){ 
	IOS :: sync_with_stdio(偽)。
	int型のn; 
	一方、(〜のscanf( "%d個"、&N)){ 
		PRIORITY_QUEUE <ノード> S [4]。
		[5]チャー。
		INT X、Y。
		INTのK = 1。
		{ため(iは++; iがn <I = 0 INT) "%sの"、A)のscanf。
			IF([0] == 'I'){ 
				scanf関数( "%d個の%のD"、およびX&Y)。
				S [X] .push(ノード{K ++、Y})。
			}そうであれば([0] == 'O'
				(!S [X] .empty()){もし
					ノード今= sで[X] .top()。
					S [X] .pop()。
					//cout<<now.num<<endl; 
					printf( "%d個の\ n"、now.num)。
				} {他
					のprintf( "EMPTYの\ n"); 
					// coutの<< "" <<てendl; 
				} 
				
			} 
		} 
	} 
	0を返します。
}

  

おすすめ

転載: www.cnblogs.com/lyj1/p/11503005.html