Завести список с видами подсказок. Берет подсказку данного вида - проверяем, есть ли вид в списке, если да, разрешаем взять подсказку, удаляем этот вид из списка, если нет, не разрешаем
Иногда бывает нужно отсортировать не просто так, а с каким-нибудь прибабахом, типа или как-то по-особому, или при этом ещё что-то сделать, такое, на пример, на олимпиадном программировании часто встречается, вот там-то готовые методы не прокатят