1088 - Bolhas e Baldes
Problema muito similar ao Organizador de Vagões, mas com uma certa otimização.
Last updated
Was this helpful?
Problema muito similar ao Organizador de Vagões, mas com uma certa otimização.
Last updated
Was this helpful?
O problema a ser descrito é idêntico ao problema 1162 - Organizador de Vagões, onde é preciso contar quantas trocas entre elementos consecutivos temos que fazer até que o vetor fique ordenado. Naquele problema, podemos simular o processo e contabilizarmos nós mesmos, porém isso só foi possível porque o número de elementos envolvidos era pequeno o suficiente (50 elementos no máximo).
Neste problema, como há a possibilidade de termos até 100.000 elementos, não podemos mais simular diretamente o algoritmo, por este possui complexidade O(n²). Entretanto, ainda há uma alternativa: podemos usar um método de ordenação mais eficiente, o MergeSort, para contar quantas inversões serão feitas no total. O raciocínio a ser usado aqui é a ideia do dividir para conquistar: cada vez que fomos fazer o merge entre os dois vetores da esquerda e da direita, sempre que fomos escolher o elemento da direita, significa que estamos fazendo inversões, onde a quantidade de inversões é o número de elementos que ainda faltam entrar no vetor de merge do lado esquerdo (ou seja, quantos elementos o elemento da direita teve que "furar a fila").