Solução Copa do Mundo

0 Flares Facebook 0 0 Flares ×

Solução por Rogério Júnior

Vamos salvar o ganhador de ada jogo no vetor gan e preenchê-lo jogo por jogo. Deste modo, o ganhador do jogo será um char salvo em gan[i]. Vamos preencher os jogos separando-os por rodadas: primeiro as oitavas, depois as quartas, depois as semis e por fim a final.

Preencher as oitavas é fácil. Imagine que ao invés das letras de 'A' a 'P' tivéssemos números de 0 a 15. Note que o jogo 1 ocorreria entre os times 0 e 1, o 2 ocorreria entre o 2 e o 3, o 3 entre o 4 e o 5, ou seja, de maneira geral, o jogo ocorre entre (i-1)*2 e (i-1)*2+1(i-1)*2. Desse modo, basta lermos os dois números que representam o placar do jogo, se o primeiro for maior, o vencedor seria (i-1)*2, caso contrário, seria (i-1)*2+1. Para convertermos novamente os times para letras, basta somarmos o caractere 'A'. Desse modo, lidos os inteiros que representam o placar, bastaria executarmos os comandos "if(a>b) gan[i]=(i-1)*2+'A'; else gan[i]=(i-1)*2+1+'A';".

Para preenchermos o resultados das quartas, precisaremos dos resultados dos jogos anteriores. Note que que a primeira quarta ocorre entre os vencedores das oitavas 1 e 2. A segunda, entre os das oitavas 3 e 4. Ou seja, de maneira geral, o resultado da i-ésima quarta ocorre entre os ganhadores das oitavas i*2-1 e i*2. Porém, note, que as quartas começam no jogo 9, ou seja, nas quartas, o jogo ocorre entre os vencedores dos jogos (i-8)*2-1 e (i-8)*2.

De maneira análoga, a primeira semi ocorre entre os vencedores da primeira e da segunda oitava, e vemos que o jogo da i-ésima semi ocorre entre os vencedores das quartas i*2-1 e i*2. Entretanto, as quartas começam no jogo 9 e as semis no jogo 13, logo o resultado do jogo será entre os vencedores dos jogos (i-12)*2+7 (i-8)*2+8. Agora resta a final, bastando imprimir o ganhador entre os vencedores dos jogos 13 e 14. Segue o código para melhor entendimento:

0 Flares Facebook 0 0 Flares ×
0 Flares Facebook 0 0 Flares ×
%d bloggers like this: