Problem

1 /10


C++ のセット

Theory Click to read/hide

C++ でのセット

セット (設定) —追加された要素を自動的に昇順に並べ替えるコンテナです。ただし、同じ値を追加する場合、set はそのインスタンスを 1 つだけ保存します (multiset - multiset- には重複が含まれる場合があります)。新しい要素がセットに追加されると、並べ替え順序に違反しないように、要素はすぐに所定の位置に配置されます。  

C++ のセットは、クラス set (multiset) を通じて STL 標準テンプレート ライブラリで定義されます。

セットは赤と黒のバイナリ ツリーです。検索、削除、挿入の操作は対数的な複雑さになります。
 
セットを使用するには、“set” ライブラリを含める必要があります。 #include <セット>
セット宣言:
set<int> mySet; // 空のセットを宣言します。 マルチセット mySet; // 空のマルチセットを宣言します。  
セット (セット) を操作するための関数
 
empty() - コンテナ内に要素が存在しないことをチェックします
 
size() - コンテナ内の要素の数を返します
 
clear() - コンテナをクリアします
 
insert() - 要素を挿入します
 
erase() - 要素を削除します
 
count() - 指定されたキーに一致する要素の数を返します
 
find() - 特定のキーを持つ要素を検索します
 
lower_bound() - 指定された値以上の最初の要素へのイテレータを返します
 
upper_bound() - 指定された値より大きい最初の要素への反復子を返します
 

 
セットとマルチセットの例
#include <iostream> #include <セット> 名前空間 std を使用します。 int main() { set<int> mySet1; // 空のセットを宣言します マルチセット mySet2; // 空のマルチセットを宣言します // セットに要素を追加します mySet1.insert(1); mySet1.insert(2); mySet1.insert(3); mySet1.insert(1); // マルチセットに要素を追加します mySet2.insert(1); mySet2.insert(2); mySet2.insert(3); mySet2.insert(1); set<int>::イテレータ it; //イテレータを作成する for(it = mySet1.begin(); it != mySet1.end(); it++) { // すべての要素を表示 cout << (*それ) << " "; // セット } cout <<エンドル; for(it = mySet2.begin(); it != mySet2.end(); it++) { // すべての要素を出力します cout << (*それ) << " "; // マルチセット } 0 を返します。 }

Problem

入力
数値 N (1 <= N <= 100000) –リクエスト数。次の N 行には、文字 ‘+’ が含まれています。または ‘-’および数値 a (1 <= a <= 1000000000)。シンボル – ‘+’ の場合、数値 a がセットに追加されます。それ以外の場合は –以前に追加されたすべての a 値を削除します。
数値が削除されると、その数値がセットに含まれることが保証されます。

インプリント
すべてのクエリが完了した後、セット内のすべての一意の要素を昇順で表示する必要があります。セット内に要素がない場合は "-1" です。

 
<頭> <本体>
# 入力 出力
1
3
+1
+2
-1
2
2
3
+1
+1
-1
-1
3
3
+1
+1
+1
1