Биодиверзитет
Аутор: Тадија Шебез
Текст и тест примери: Алекса Милојевић
Анализа решења: Владимир Миловановић
Тестирање: Владимир Миловановић
Главно решење
Како је циљ одредити број различитих биолошких предака врста које тренутно живе, а будући да су у задатку дати индекси врста које тренутно живе, најпре је потребно приступити израчунавању индекса биолошких предака. То се чини тако што се индекс врсте i целобројно подели са K и то за све индексе i_1, i_2, \ldots, i_N у задатом низу. Тиме се добија нови низ који заправо представља низ биолошких предака. Треба приметити да се у општем случају вредности унутар низа билошких предака могу понављати. Најзад да би се одредио број различитих предака потребно је пребројати јединствене чланове низа који садржи и дупликате. Постоји више начина на који је могуће израчунати број јединствених чланова низа, а један од њих је да се чланови низа биолошких предака сортирају и онда у једном пролазу кроз низ изброје различите вредности.
У решењу, поред операција пролаза кроз низ у којима се извршава целобројно дељење или пребрајање јединствених чланова, а које су линеарне сложености \mathcal{O}(N), такође имамо и операцију сортирања која је доминантне сложености. Користећи се ефикасним алгоритмима низ је могуће сортирати у логлинеарној временској сложености \mathcal{O}(N\log N), иако је за максималан број поена то било довољно учинити и у квадратној, односно \mathcal{O}(N^2) сложености.