Índice de Arquivos

O enunciado exige que seja mantida a propriedade temporal dos arquivos. Isso significa que só podemos mover arquivos que estão no final da fila de arquivos no topo. Isso permite criar uma solução com um algoritmo ganancioso.

Primeiramente, lemos os arquivos e calculamos o espaço entre o último e o atual. Lembre-se de usar long long para representar números da ordem de $$$10^{10}$$$. Em seguida, executamos o algoritmo testando mover todos os $$$n$$$ arquivos, partindo do final. Quando o tempo necessário exceder o necessário, imprimimos o espaço que conseguimos liberar com aquele tempo.

Esta solução é $$$O(n)$$$. É possível implementar o segundo laço em $$$O(\lg n)$$$, fazendo busca binária no espaço necessário, porém, é desnecessário já que já foi necessário um laço $$$O(n)$$$ para ler a entrada e complica a implementação.