Escrito por Lúcio Figueiredo
Conhecimento prévio necessário:
Vamos ordenar cada aula
de maneira crescente pelo valor
.
Defina
como o máximo de conhecimento que é possível ganhar usando apenas algumas das aulas
. Existem dois casos possíveis ao calcular
: Usar a aula
ou não usá-la.
Caso 1: Se não usarmos a aula
, a transição é simples:
.
Caso 2: Se usarmos a aula
, a transição já não é tão simples: é necessário tomar cuidado para que a aula
não faça interseção com nenhuma outra aula. Como as aulas estão ordenadas por
, é possível perceber que uma aula
não possuirá interseção com
se e somente se
. Assim, podemos utilizar uma busca binária para encontrar o maior índice
tal que a aula
não possui interseção com a aula
. Após encontrarmos tal índice
, a transição de
neste caso se torna
.
Assim, considerando os dois casos, concluímos que
. A resposta final será
.
Complexidade final:
(devido à busca binária e a ordenação das aulas). Confira o código abaixo para melhor entendimento.
