Solution to Google Hashcode 2020 Qualification Round
Individual Scores:
A - 21
B - 5,822,900
C - 5,689,822
D - 5,037,435
E - 5,071,740
F - 5,340,296
Final Score: 26,962,214
We define a time-difference
td = days - library #_time
and calculate a library score by
while(book_id < td * book_per_day of library && book_id < number of books in library)
{
score += score for book with book_id
book_id++
}
and using the score function
score /= library #_time
to get the library score. The library with the highest score is added to the solution and we erase each book that is scanned already due to the selected library from each other library which has not yet been added to the solution.
Our high scores have been achieved by varying the score function, e.g. to
score = score * score / library #_time
and by switching score functions after a given number of days.