То, что вы ищете, называется деревом статистики по порядку . Если вы используете библиотеку GNU C ++, у вас должно быть расширение, доступное для построения статистики статистики заказов. Ниже приведен краткий пример:
#include
#include
#include
using namespace std;
using namespace pb_ds;
typedef tree<
int, /* key type */
null_mapped_type, /* value type */
less, /* comparison */
rb_tree_tag, /* for having an rb tree */
tree_order_statistics_node_update> order_set;
int main()
{
order_set s;
s.insert(10);
s.insert(20);
s.insert(50);
s.insert(25);
printf("rank of 25 = %d\n", s.order_of_key(25));
}
Выход должен быть rank of 25 = 2
. Дополнительные примеры: этот файл .