Я пытаюсь решить проблему Google Ha sh Challenge 2020. В этой задаче у вас есть несколько библиотек, и для каждой библиотеки у вас есть список книг. Каждая книга имеет общий балл (определяется как целое число). Теперь я хотел отсортировать книги по каждой библиотеке, уменьшив оценку, и я написал, что
for (auto it = inst.libraries.begin(); it != inst.libraries.end(); ++it)
{
std::sort((*it).books.begin(), (*it).books.end(), [inst](long const &b1, long const &b2) -> bool { return inst.scores[b1] > inst.scores[b2]; });
}
inst
- это место, где я храню свои данные. Предыдущий код (с опцией O2) выполняется за 8 минут для экземпляра с 1000 библиотеками и менее 1000 книг в каждой библиотеке.
Есть ли ошибки в моем коде c ++? Что я должен сделать, чтобы добиться лучших результатов?