История изменений
Исправление f1u77y, (текущая версия) :
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <map>
template<class T>
using ordered_set = __gnu_pbds::tree<T,
std::less<T>,
__gnu_pbds::null_type,
__gnu_pbds::rb_tree_tag,
__gnu_pbds::tree_order_statistics_node_update>;
struct Record {
// your fields
double rating;
};
bool operator < (Record a, Record b) { return a.rating < b.rating; }
ordered_set<Record> top;
std::map<uint32_t, Record> ids;
// use ordered_set<T>::find_by_order() and ordered_set<T>::order_of_key()
ну и rating
конечно должен быть уникален, поэтому каждый Record
тоже будет уникальным
Исправление f1u77y, :
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <map>
template<class T>
using ordered_set = __gnu_pbds::tree<T,
std::less<T>,
__gnu_pbds::null_type,
__gnu_pbds::rb_tree_tag,
__gnu_pbds::tree_order_statistics_node_update>;
struct Record {
// your fields
double rating;
};
bool operator < (Record a, Record b) { return a.rating < b.rating; }
ordered_set<Record> top;
std::map<uint32_t, Record> ids;
// use ordered_set<T>::find_by_order() and ordered_set<T>::order_of_key()
ну и `rating` конечно должен быть уникален, поэтому каждый `Record` тоже будет уникальным
Исходная версия f1u77y, :
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <map>
template<class T>
using ordered_set = __gnu_pbds::tree<T,
std::less<T>,
__gnu_pbds::null_type,
__gnu_pbds::rb_tree_tag,
__gnu_pbds::tree_order_statistics_node_update>;
struct Record {
// your fields
double rating;
};
bool operator < (Record a, Record b) { return a.rating < b.rating; }
ordered_set<Record> top;
std::map<uint32_t, Record> ids;
// use ordered_set<T>::find_by_order() and ordered_set<T>::order_of_key()