/// Nombre de la persona, sólo con fines de representación
std::string nombre;
- /// Lista de personas que prefiere, la primera de la lista es la
- /// que mejor posicionada esta
+ /// Para la lista de personas que prefiere usamos dos estructuras: la
+ /// primera es una lista en donde el primer elemento es la persona
+ /// mejor posicionada; la segunda es un hash indexado por el nombre de
+ /// la persona, y como valor la posicion numerica.
+ /// Esta dualidad nos permite tener iteracion en orden, O(1) en
+ /// encontrar el mejor, y O(1) en ver quien es el preferido entre dos
+ /// personas.
prefs_type prefs;
+ HashTable<int> prefs_hash;
/// Estado de la persona
estado_type estado;
rechazos_type rechazos;
/// Función de comparación entre dos personas según nuestras prefs
- bool cmp(const Persona& p1, const Persona& p2) const;
+ int cmp(const Persona& p1, const Persona& p2) const;
/// Ordenamos las ofertas según nuestras preferencias
void ordenar_ofertas();