g++拡張にpb_ds(policy based data structure)というのがあって、その中に便利なtreeというのがあります。 細かい使い方まとめみたいなページは見つかりませんでしたが、コンテストでの主な用法をまとめておきます。c++のsetの上位互換みたいな感じで使えます。 CF・TopCoderでは使えます。 用意: g++の新しそうなやつを使う #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> #include<ext/pb_ds/tag_and_trait.hpp> using namespace __gnu_pbds; 宣言: tree<key,null_type,less<key>,rb_tree_tag,tree_order_statistics_node_up