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