Solução Informática – Nível Intermediário – Semana 28

por

Solução por Anita Ramos

Esse problema exige que você atualize os valores de uma determinada posição de um vetor toda vez que este for diferente do valor processado anteriormente. Além disso, é necessário armazenar os valores alterados para imprimir no final.

Iniciando a programação então, depois de declarar a biblioteca, declaramos um $$map$$ e um $$set$$ que nos ajudaram nesse armazenamento e impressão e declaramos as demais variáveis. Depois lemos o $$C$$ e o $$N$$ e já iniciamos o loop para ler todos as atualizações iniciais dadas, guardando em um map $$v$$ a última atualização para cada número do programa. Em seguida iniciamos o loop de atualizações novas, em que para cada versão lida nós checamos se ela é maior que a versão atual armazenada. Se ela for, nós alteramos a atualização do programa no map para a mais atual e guardamos seu identificador no set $$s$$. Por fim, declaramos um iterador para passar por todo o conjunto $$s$$ e imprimimos o identificador e a última atualização armazenada de cada número do programa, retornando no final a 0.

Segue a programação comentada para melhor compreensão da solução:

https://gist.github.com/anitainfo/dd4679c1cb0229cfb58312dfc6a3a4a5